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

11exemple.xlsx (10.54 Ko)

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

6exemple.xlsx (8.99 Ko)

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

Rechercher des sujets similaires à "decomposition fonction contenu"