Dans VBA : dupliquer des lignes contenant des retours chariots
Résolu
Loic
-
Loïc -
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.
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
-
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
-
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. -