Décomposition de cellule en fonction du contenu
Bonjour,
J'ai besoin d'aide pour un fichier excel.
Je souhaiterai un maccro qui une fois exécutée, dupliquerai une ligne n fois si la cellule de la colonne A contient "set n" (avec n en chiffre).
Je connais un peu VBA (très peu si on regarde le mastodonte que c'est) mais là je ne vois pas comment faire.
Je n'arrive pas à mettre de photo de l'exemple donc je mets un lien.
Merci d'avance pour votre aide.
Cordialement
Nathan BOUVIER
Bonjour Nathan et
Voici le code que tu pourras mettre dans un module
Sub MiseEnForme()
Dim dLig As Long, Lig As Long
Dim LibSet As String, NbLig As Integer, Ref As String
With Sheets("Feuil1")
dLig = .Range("A" & Rows.Count).End(xlUp).Row
For Lig = dLig To 2 Step -1
' Récupérer la valeur de la cellule
Ref = .Range("A" & Lig).Value
LibSet = Mid(Ref, InStr(1, Ref, "set"))
NbLig = Mid(LibSet, 4)
Ref = Left(Ref, InStr(1, Ref, " ") - 1)
' Insérer le ligne nécessaire
.Rows(Lig + 1 & ":" & Lig + NbLig - 1).Insert shift:=xlDown
.Range("A" & Lig & ":A" & Lig + NbLig - 1).Value = Ref
Next Lig
End With
End Sub@+
Wow, t'es vraiment très très chaud ...
Je m'étais dit qu'en demandant le plus simple possible je pourrais adapter la maccro ensuite mais au final je n'y comprends quasiment rien...
De ce fait j'ai plusieurs question :
- Si je souhaite garder la totalité de ma référence plutôt que de ne garder que les chiffres du début, comment puis-je faire ? (si je comprends bien il me faut changer la variable "Ref" mais je ne vois pas comment faire avec toutes ces variables ...)
- Quand je mets plus de 1 référence, la maccro fonctionne mais elle provoque une erreur "argument ou appel de procédure incorrect" sur ligne où tu donnes une valeur à Libset
- je veux appliquer ça dans un tableau et je veux que ça duplique toutes mes colonnes (comment puis-je replacer le .range("A"...) pour que cela s'applique sur plusieurs colonne
- si il y a "set 21p" la maccro ne marche pas à cause de la lettre qui suit ..
Franchement je ne sais pas comment te remercier pour ce que tu as déjà fait mais si tu pouvais m'expliquer rapidment comment je pourrais régler ces 3 point ce serait génial.
Merci infiniment
Nathan
Ce que je demande est difficile je pense,
J'ai pensé à quelque chose de différents, puisque après set il y a tjrs 1 ou 2 chiffre max, je peux insérer une colonne pour me sortir le nombre. Cependant je souhaiterais insérer des ligne en dessous de chaque ligne qui contient un "set" (et un nombre de ligne égale au nombre qui suit le "set"..
Dans l'exemple je souhaite donc doubler la première ref pour l'avoir en double et ne rien faire sur la deuxième ref
merci
Re,
- Si je souhaite garder la totalité de ma référence plutôt que de ne garder que les chiffres du début, comment puis-je faire ? (si je comprends bien il me faut changer la variable "Ref" mais je ne vois pas comment faire avec toutes ces variables ...)
Tu supprimes alors
Ref = Left(Ref, InStr(1, Ref, " ") - 1)- Quand je mets plus de 1 référence, la macro fonctionne mais elle provoque une erreur "argument ou appel de procédure incorrect" sur ligne où tu donnes une valeur à Libset
C'est simplement que la référence que tu nous a donné n'est pas la même
- je veux appliquer ça dans un tableau et je veux que ça duplique toutes mes colonnes (comment puis-je replacer le .range("A"...) pour que cela s'applique sur plusieurs colonne
Ce n'est pas ta demande initiale... domage
- si il y a "set 21p" la maccro ne marche pas à cause de la lettre qui suit ..
C'est le problème quand tu jette vite fait une demande sur un forum... il fallait mettre un fichier avec plusieurs références
Franchement je ne sais pas comment te remercier pour ce que tu as déjà fait
Ce ne sera pas nécessaire surtout après avoir lu ce qui précédait
Perso, je n'aime pas revenir sur un sujet sauf lorsqu'il est bien défini dès le départ
Je passe la main à qui voudras bien