- VBA Dupliquer ligne si condition + suppression déplacement
- Dupliquer ecran - Guide
- Forcer suppression fichier - Guide
- Excel cellule couleur si condition texte - Guide
- Partager photos en ligne - Guide
- Dupliquer whatsapp - Guide
11 réponses
Merci pour ce retour super rapide !
J'ai retranscris selon mon besoin.
Après plusieurs essais, j'ai l'erreur 91 qui apparait , soit Variable d'objet non défini mais je ne vois pas où est le soucis dans le code... sur la 1ère ligne
Cela arrive lorsque je double la ligne : Sheets("Feuil2").Range("A" & x) = Sheets("Feuil1").Range("A" & n)
J'ai plusieurs colonne a recopier.
Par contre, cela fonctionne lorsque je fais uniquement le remplacement sur la colonne D et la colonne B par exemple
Faut-il créer un "autre n" pour recopier les autres colonnes ?
bonjour,
l'erreur se produit sur cette ligne de code? Peut-être montrer le code complet, en tenant compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
J'ai tout fermé et recommencé au calme et maintenant cela fonctionne... Je ne sais pas ce qu'il s'est passé.
J'ai refait des essais, la macro fonctionne et le problème n'est pas ré-apparu.
Dites-moi s'il y a une erreur quand même, sait-on jamais !
merci à vous !
For n = 1 To Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row lon = Len(Sheets("dataA").Range("D" & n)) texte = Sheets("dataA").Range("D" & n) nf = lon / 10 For t = 1 To nf nbc = 10 If Val(Left(Sheets("dataA").Range("D" & n), 1)) > 0 And t = 9 Then nbc = 11 a = Left(texte, nbc) texte = Right(texte, Len(texte) - nbc) x = x + 1 Sheets("dataB").Range("A" & x) = Sheets("dataA").Range("A" & n) Sheets("dataB").Range("B" & x) = Sheets("dataA").Range("B" & n) Sheets("dataB").Range("C" & x) = Sheets("dataA").Range("C" & n) Sheets("dataB").Range("D" & x) = a Next t Next n
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
Je me retrouve à devoir dupliquer également sur la colonne C où si on retrouve un "+" dans la cellule il faut ajouter une ligne. il peut y avoir plusieurs + dans la même cellule.
Exemple :
Ligne 1 : A+B+C
Résultat souhaité
Ligne 1 : A
Ligne 2 : B
Ligne 3 : C
J'aimerais l'ajouter au code actuel cité plus haut.
Merci pour votre aide.
Bonjour,
Merci pour la partie du code ! Celui-ci ne recopie pas le reste de la ligne d'où le faite que je souhaitais l'ajouter au code précédent.
Je n'arrive pas très bien à comprendre comment le code fonctionne d'ailleurs pour essayer de l'adapter au précédent ou de refaire la même action de duplication sur les nouvelles lignes.
Je te remets ici le code avec des commentaires
Sub decomposer() 'Boucle sur les lignes remplies de la feuille For n = 1 To Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row + 1000 'Compte le nombre de + (on fait la différence entre la longueur de la chaîne complète et la longueur de la chaîne dont on remplace le s+ par du vie) a = Len(Range("C" & n)) - Len(WorksheetFunction.Substitute(Range("C" & n), "+", "")) 'si a est un nombre positif If a > 0 Then ' boucle le nombre de fois qu'il y a de + For t = 1 To a 'sélectionne la ligne en dessous Range("C" & n + 1).Select 'insere une ligne Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove Next ' découpe la chaîne de caractères en fonction des + et place les items dans un tableau tablo = Split(Range("C" & n), "+") 'boucle sur les items découpés For g = 0 To UBound(tablo) 'inscrit l'item dans la bonne cellule Range("C" & n + g) = tablo(g) Next End If Next End Sub
Bonjour,
Merci pour ces explications.
J'ai essayé de réaliser ce code, celui-ci rajoute bien une ligne avec la valeur séparant + mais ne reporte pas le reste des données des autres colonnes de la ligne au-dessus de celle-ci.
Quelle est mon erreur ?
Sheets("dataA").Select For n = 1 To Columns(8).Find("*", , , , xlByColumns, xlPrevious).Row + 1000 a = Len(Sheets("dataA").Range("G" & n)) - Len(WorksheetFunction.Substitute(Range("G" & n), "+", "")) If a > 0 Then For t = 1 To a Range("G" & n + 1).Select Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove Next tablo = Split(Range("G" & n), "+") For g = 0 To UBound(tablo) Range("G" & n + g) = tablo(g) x = x + 1 Sheets("dataB").Range("A" & x) = Sheets("dataA").Range("A" & n) Sheets("dataB").Range("B" & x) = Sheets("dataA").Range("B" & n) Sheets("dataB").Range("C" & x) = Sheets("dataA").Range("C" & n) Sheets("dataB").Range("D" & x) = a Sheets("dataB").Range("E" & x) = Sheets("dataA").Range("E" & n) Sheets("dataB").Range("F" & x) = Sheets("dataA").Range("F" & n) Sheets("dataB").Range("G" & x) = Sheets("dataA").Range("G" & n) Sheets("dataB").Range("H" & x) = Sheets("dataA").Range("H" & n) Next End If Next End Sub