Dupliquez ligne excel selon une valeur
Résolu/Fermé
A voir également:
- Dupliquez ligne excel selon une valeur
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Calculer une moyenne sur excel - Guide
- Si et excel - Guide
8 réponses
Bonjour,
Pour obtenir ton désir essaies ceci :
Pour obtenir ton désir essaies ceci :
Sub duplique()
Dim lig As Long, dup As Integer
For lig = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
dup = Cells(lig, "D").Value
If dup > 1 Then
Rows(lig + 1).Resize(dup - 1).Insert
Rows(lig).Resize(dup).FillDown
End If
Next lig
End Sub
SELKAIM
Messages postés
6
Date d'inscription
mardi 19 janvier 2021
Statut
Membre
Dernière intervention
25 janvier 2021
20 janv. 2021 à 14:49
20 janv. 2021 à 14:49
Bonjour,
Je relance ce sujet, car j'ai une nouvelle problématique.
Je souhaiterais incrémenter un colonne suite à la duplication.
Je reprend le fichier excel, construit de la sorte :
A B C D
1 MAX 16 ADRESSE 2
Suite à la duplication, cela donne donc :
A B C D
1 MAX 16 ADRESSE 2
1 MAX 16 ADRESSE 2
Je souhaiterais que la colonne C soit incrémenter de la manière suivante :
16A, 16B etc.. (selon nbr de duplication et doublons de valeur (ici "16")
Merci à vous,
Simon
Je relance ce sujet, car j'ai une nouvelle problématique.
Je souhaiterais incrémenter un colonne suite à la duplication.
Je reprend le fichier excel, construit de la sorte :
A B C D
1 MAX 16 ADRESSE 2
Suite à la duplication, cela donne donc :
A B C D
1 MAX 16 ADRESSE 2
1 MAX 16 ADRESSE 2
Je souhaiterais que la colonne C soit incrémenter de la manière suivante :
16A, 16B etc.. (selon nbr de duplication et doublons de valeur (ici "16")
Merci à vous,
Simon
Bonjour,
Pour compléter ta fonction, voilà le complément de code selon ton exemple :
Pour compléter ta fonction, voilà le complément de code selon ton exemple :
Sub duplique()
Dim lig As Long, dup As Integer, dec As Integer, pos As Integer, cel
For lig = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
dup = Cells(lig, "D").Value
If dup > 1 Then
Rows(lig + 1).Resize(dup - 1).Insert
Rows(lig).Resize(dup).FillDown
cel = Cells(lig, "C").Value
pos = InStr(cel, " ")
For dec = 1 To dup - 1
Cells(lig + dec, "C").Value = Left(cel, pos - 1) & Chr(64 + dec) & Mid(cel, pos)
Next dec
End If
Next lig
End Sub
SELKAIM
Messages postés
6
Date d'inscription
mardi 19 janvier 2021
Statut
Membre
Dernière intervention
25 janvier 2021
21 janv. 2021 à 11:56
21 janv. 2021 à 11:56
Bonjour,
Merci de votre réponse rapide..
Ca bloque, grace à "Option explicit", il m'identifie la ligne "11" en jaune soit
"Cells(lig + dec, "I").Value = Left(cel, pos - 1) & Chr(64 + dec) & Mid(cel, pos)"
Il m'indique "Erreur d'exécution 5" : "Argument ou appel de procédure incorrect"
Dans mon fichier, c'est "I" la colonne "C" dans mon exemple. Elle correspond à un nombre (entre 1 & 6 chiffres).
A votre disposition pour plus d'infos..
Merci encore énormément
Simon
Merci de votre réponse rapide..
Ca bloque, grace à "Option explicit", il m'identifie la ligne "11" en jaune soit
"Cells(lig + dec, "I").Value = Left(cel, pos - 1) & Chr(64 + dec) & Mid(cel, pos)"
Il m'indique "Erreur d'exécution 5" : "Argument ou appel de procédure incorrect"
Dans mon fichier, c'est "I" la colonne "C" dans mon exemple. Elle correspond à un nombre (entre 1 & 6 chiffres).
A votre disposition pour plus d'infos..
Merci encore énormément
Simon
Bonjour,
Tu as mal recopié le code car il manque des espaces dans le code en jaune.
Si tu changes les données il faut aussi tout adapter correctement et j'avais mis la lettre colonne dans ce but..
Tu as mal recopié le code car il manque des espaces dans le code en jaune.
Si tu changes les données il faut aussi tout adapter correctement et j'avais mis la lettre colonne dans ce but..
SELKAIM
Messages postés
6
Date d'inscription
mardi 19 janvier 2021
Statut
Membre
Dernière intervention
25 janvier 2021
22 janv. 2021 à 09:35
22 janv. 2021 à 09:35
Bonjour,
Désolé, j'ai essayé de comprendre et surtout, de m'approprier ce code.
Je ne vois pas les espaces manquants dans le code jaune.
Merci pour votre aide, je vais continuer de chercher.
Simon
Désolé, j'ai essayé de comprendre et surtout, de m'approprier ce code.
Je ne vois pas les espaces manquants dans le code jaune.
Merci pour votre aide, je vais continuer de chercher.
Simon
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SELKAIM
Messages postés
6
Date d'inscription
mardi 19 janvier 2021
Statut
Membre
Dernière intervention
25 janvier 2021
22 janv. 2021 à 12:24
22 janv. 2021 à 12:24
Sub duplique()
Dim lig As Long, dup As Integer, dec As Integer, pos As Integer, cel
For lig = Cells(Rows.Count, "B").End(xlUp).Row To 1 Step -1
dup = Cells(lig, "A").Value
If dup > 1 Then
Rows(lig + 1).Resize(dup - 1).Insert
Rows(lig).Resize(dup).FillDown
cel = Cells(lig, "I").Value
pos = InStr(cel, " ")
For dec = 1 To dup - 1
Cells(lig + dec, "I").Value = Left(cel, pos - 1) & Chr(64 + dec) & Mid(cel, pos)
Next dec
End If
Next lig
End Sub
Voilà mon code actuel :
La colonne A est celle de du nbr de lignes à insérer.
La colonne B est celle des noms des n° de dossier pour identifier les doublons
La colonne I correspond au numéro du colis à incrémenter par A,B, C etc..
Merci à vous,
Bonjour,
ce code fonctionne correctement à un détail près, c'est que tu devrais avoir :
ce code fonctionne correctement à un détail près, c'est que tu devrais avoir :
For lig = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
SELKAIM
Messages postés
6
Date d'inscription
mardi 19 janvier 2021
Statut
Membre
Dernière intervention
25 janvier 2021
25 janv. 2021 à 10:15
25 janv. 2021 à 10:15
Bonjour,
Merci pour votre suivi,
Ca ne marche pas, lorsque je met "A", il m'indique toujours une erreur ici :
Je n'arrive vraiment pas à comprendre l'erreur
Simon
Merci pour votre suivi,
Ca ne marche pas, lorsque je met "A", il m'indique toujours une erreur ici :
Cells(lig + dec, "I").Value = Left(cel, pos - 1) & Chr(64 + dec) & Mid(cel, pos)
Je n'arrive vraiment pas à comprendre l'erreur
Simon
20 janv. 2021 à 09:34
Merci pour votre aide, je viens d'essayer, ca fonctionne parfaitement...
Bravo pour ce code très court, mais super efficace.
Bonne continuation,
Amicalement
Simon