Mémorisation pour concaténation

Résolu
Golan2 Messages postés 6 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 octobre 2009 - 12 août 2008 à 20:50
Golan2 Messages postés 6 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 octobre 2009 - 20 août 2008 à 23:12
Bonjour,

J'espère ne pas vous embéter avec ma question mais je n'ai pas trouvé de quoi m'aiguiller.

Voila mon souci :

J'ai une feuille ou je liste des documents avec les personnes intéressées par le dit document.

<col style= \"width: 60pt;\" span=\"5\" width=\"80\" />----
, Doc 1, Doc 2, Doc 3, Doc 4, ----
Bernard, oui, oui, non , oui, ----
Jean, non, non, oui, oui, ----
Michel, non, oui, non , non, ----
Odile, non, non, non, non, ----
Paul, oui, non, oui, non, ----
Valérie, non, non, non, oui

Dans une autre feuille je récupère les données de Jean par exemple
j'aimerais à partir du tableau de ma première feuille, concaténer tout les documents concernant Jean dans ma deuxième feuille sous la forme Doc 3, Doc 4 (le cas échéant) dans une seule et même cellule.

J'ai commencé avec ca :

Sub Affecter_Document()
Dim i As Integer
For i = 2 To 5
Sheets("Tableau_General").Select
If Cells(3, i) = "oui" Then
Sheets("Fiche_Jean").Select
Range("D21").Select
ActiveCell.FormulaR1C1 = Equivalence(i)
End If
Next
Sheets("act0002").Select
End Sub

avec

Function Equivalence(i As Integer) As String    Equivalence Switch(i 2, "Doc1", i = 3, "Doc2", i = 4, "Doc3", i = 5, "Doc4")
End Function

Mais avec cette boucle le dernier document écrase toujours les précédents. J'ai essayer plusieurs idées mais je dois faire fausse route. Et à vrai dire même si j'arrivais à récupéré tous les docs, je ne sais trop comment concaténer.

Merci d'avance

2 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
12 août 2008 à 21:18
Peut-etre quelque chose du genre :

Sub Affecter_Document()
Dim i As Integer
Dim tmp As String

'--- Traitement de la ligne 'Jean'
tmp =  ""
For i = 2 To 5
    Sheets("Tableau_General").Select
    If Cells(3, i) = "oui" Then
        If tmp <> "" Then tmp = tmp & ", "
        tmp = tmp & Equivalence(i)
    End If
Next
Sheets("Fiche_Jean").Select
ActiveSheet.Range("D21").Select
ActiveCell.FormulaR1C1 = tmp
'-------------------------------------

Sheets("act0002").Select
End Sub

Function Equivalence(i As Integer) As String
    Equivalence = Switch(i = 2, "Doc1", i = 3, "Doc2", i = 4, "Doc3", i = 5, "Doc4")
End Function

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
Golan2 Messages postés 6 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 16 octobre 2009
20 août 2008 à 23:12
Salut et désolé pour la réponse tardive.

Ca marche nickel, merci beaucoup.
0
Rejoignez-nous