Tableau

Bonjour,

Ci-joint j'ai mon tableau surligner en jaune et je voudrais arriver à faire automatiquement les données comme sous la forme du tableau surligné en rouge.

Est-possible ?

Merci d'avance.

Cordialement,

southaprk

8test.xlsx (8.52 Ko)

Bonjour,

Voici une solution qui utilise la fonction Split pour scinder le texte suivant le séparateur ";".

16exemple.xlsm (18.36 Ko)

A+

Merci mais je ne vois pas comment utiliser cette fonction "split".

Quels sont les étapes pour réaliser celà ?

Merci mais je ne vois pas comment utiliser cette fonction "split".

Quels sont les étapes pour réaliser cela ?

Tout dépend du point de départ.

Si tu ne connais rien à VBA, le chemin risque d’être long et tortueux.

As-tu testé la macro ?

As-tu regardé le code ?

A+

Oui j'ai regardé le code testé le macro mais je ne vois pas du tout comme arriver à cette démarche.

Est-ce que tu peux expliquer, avec ton point de départ, comment tu as procédé pour réaliser le tableau ?

Merci d'avance.

Regarde le code commenté et dis-moi ce que tu ne comprends pas.

Sub Test()
Dim WsS As Worksheet, WsC As Worksheet
Dim Cel As Range
Dim Pays
Dim LigneC As Long
Dim K As Integer
    'On définit la feuille Source
    Set WsS = Worksheets("Feuil1")
    'On définit la feuille Cible
    Set WsC = Worksheets("Feuil2")
    'On définit le numéro de la première ligne cible
    LigneC = 2
    'On balaye chaque cellule de la colonne A de la feuille source
    For Each Cel In WsS.Range("A2:A" & WsS.Range("A" & Rows.Count).End(xlUp).Row)
        'On scinde le texte de cette cellule afin d'isoler chacun des pays qu'il contient.
        'On obtient ainsi le tableau "Pays" qui contient autant d'éléments que de noms de pays dans le texte.
        Pays = Split(Cel, ";")
        'On balaye tous les éleéments du tableau
        For K = 0 To UBound(Pays)
            'On copie le nom du pays
            WsC.Range("A" & LigneC) = Pays(K)
            'On copie le prénom
            WsC.Range("B" & LigneC) = Cel.Offset(0, 1)
            'On copie le nom
            WsC.Range("C" & LigneC) = Cel.Offset(0, 2)
            'On incrémente le numéro de la ligne cible
            LigneC = LigneC + 1
        Next K
    Next Cel
    WsC.Select
    Set WsS = Nothing: Set WsC = Nothing
End Sub

A+

Merci de ton aide, j'ai réussi à m'en sortir !

Rechercher des sujets similaires à "tableau"