Dans VBA : dupliquer des lignes contenant des retours chariots

Résolu
Loic -  
 Loïc -
Bonjour,

J'ai une liste. Chaque ligne contient une personne. Les colonnes A à F contiennent les coordonnées. La colonne G contient les options choisies. Lorsque plusieurs options sont choisies elles sont séparées par un retour chariot (chr(10)).
Je voudrai avoir une liste à plat avec une option par ligne (et plusieurs fois la même personne lorsqu'elle a plusieurs options).

Je n'arrive pas à détecter avec vba les cellules qui contiennent un retour chariot.

J'ai essayé avec "InStr(Chr(10), cellule_option, 0)" qui me renvoie toujours un message "Type incompatible (erreur 13)".

Quelqu'un a-t-il une solution.
Merci d'avance.

, office 2010.

3 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonsoir,

Si toi avec le fichier source tu ne vois pas, imagine ce que l'on peut voir nous sans ce fichier.
Et met aussi un exemple du résultat attendu.

Déposer le fichier *.xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
0
Loïc
 
Bonjour Eric,

Le fichier contenant le format initial et le format souhaité est ici : http://cjoint.com/?BLgjb2fCcME
Merci du temps consacré à m'aider.

Bien cordialement,
Loïc
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

le séparateur est bien chr(10), je n'ai pas eu de problème...
Sub dupliquer() 
    Dim lig As Long, lig2 As Long, domaine As Variant, i As Long 
    Dim sh As Worksheet 
    Set sh = Worksheets("Feuil2") 
    Application.ScreenUpdating = False 
    sh.Cells.ClearContents 
    Cells(1, 1).Resize(1, 7).Copy sh.Cells(1, 1) 
    lig2 = 2 
    For lig = 2 To Cells(Rows.Count, 1).End(xlUp).Row 
        domaine = Split(Cells(lig, "G"), vbLf) 
        For i = 0 To UBound(domaine) 
            Cells(lig, 1).Resize(1, 6).Copy sh.Cells(lig2, 1) 
            sh.Cells(lig2, 7) = domaine(i) 
            lig2 = lig2 + 1 
        Next i 
    Next lig 
    Application.ScreenUpdating = True 
    sh.Activate 
End Sub

https://www.cjoint.com/?BLgkZeXUafX
je ne teste pas si Gx est vide....

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
Loïc
 
Merci beaucoup Eric!
C'est parfait.

Cordialement,
Loïc
0