Dupliquer lignes aves conditions

Dupliquer des lignes d’un fichier Excel

Imaginons un fichier excel composé de lignes du type :

Col1 Col2 Col3 … Col10

Maison Adresse 1 Adresse 2 … Chambre, Salon, Cuisine

Appart Adresse 3 Adresse 4 …

Bateau Adresse 5 Adresse 6 … Salle des machines, Plage

Cet exemple est complètement inutile, mais c’est le principe qui compte : imaginons que nous souhaitons construire des requêtes d’insertion en base, qui permettent d’insérer dans notre exemple, 6 lignes :

Maison Adresse 1 Adresse 2 … Chambre

Maison Adresse 1 Adresse 2 … Salon

Maison Adresse 1 Adresse 2 … Cuisine

Appart Adresse 3 Adresse 4 …

Bateau Adresse 5 Adresse 6 … Salle des machines

Bateau Adresse 5 Adresse 6 … Plage

Voici la macro que j'ai trouvé sur internet et qui est supposer permettre de générer le tableau 2 à partir du tableau 1. Attention, on suppose que les lignes à dupliquer sont celles qui contiennent en colonne 10, des valeurs séparées par des virgules.

Sub gogoJonyGo()

Dim iligne As Integer

iligne = 2

While Cells(iligne, 1).Value <> "" And iligne < 1000

If InStr(1, Cells(iligne, 10).Value, ",") > 0 Then

ichar = InStr(1, Cells(iligne, 10).Value, ",")

sgauche = Trim(Left(Cells(iligne, 10).Value, ichar - 1))

sdroite = Trim(Right(Cells(iligne, 10).Value, Len(Cells(iligne, 10).Value) - ichar))

Rows(iligne + 1).Select

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Rows(iligne).Select

Selection.Copy

Rows(iligne + 1).Select

ActiveSheet.Paste

Application.CutCopyMode = False

Cells(iligne, 10) = sgauche

Cells(iligne + 1, 10) = sdroite

End If

iligne = iligne + 1

Wend

End Sub

Bonjour

C'est quoi la question ?

Merci

J'ai copier cette macro dans mon fichier mais j'ai une erreur de compilation : valeur non défini sur la ligne ichar= InStr...

Re,

Il faut déclarer tes variables :

Dim ichar As Byte
Dim sgauche As String, sdroite As String

Comme tu es nouveau venu, je t'invite également à lire ce petit lien qui t'aidera dans tes demandes et réponses sur ce foru m --> https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Si ok, merci de cloturer le fil en cliquant sur le V vert à coté du bouton Editer

Amicalement

Edit dan : tu peux aussi remplacer une partie de ton code par celle ci-dessous

sdroite = Trim(Right(Cells(iligne, 13).Value, Len(Cells(iligne, 13).Value) - ichar))
Rows(iligne + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows(iligne).Copy Rows(iligne + 1)
Application.CutCopyMode = False

A te relire

J'ai effectué les changements que tu m'as envoyé et maintenant je n'ai plus d'erreur mias il ne se passe rien lorsque j'exécute la macro. Je suis plutôt débutant en VBA. Est-ce possible qu'il me manque des détails dans ma macro.

Merci

re,

Il faudrait que tu dises ce que tu cherches à faire. Si c'est dupliquer une ligne en fonction que chiffre qui se trouve en colonne J (ce que je comprends en lisant ton code) est suppérieur à 0, modifie cette ligne

If InStr(1, Cells(iligne, 10).Value, ",") > 0 Then

par

If Cells(iligne, 10).Value > 0 Then

A te relire

Avec les dernières modifications que tu m,as conseillé ça fonctionne. Il recopie ma ligne selon la condition de la colonne 13.

Par contre, il m'affiche une erreur : Argument ou appel de procédure incorrect.

Merci

re,

Faudrait que tu expliques ce que tu dois faire comme je te l'ai demandé avant. Là je dois deviner ...

TU veux dupliquer les lignes pour lesquelles il en colonne K des informations séparées par une virgule ??

Dans ton fichier "abc, cba" ?

Et combien peux-tu avoir de valeur séparée par une virgule dans cette colonne K. Ici 2 mais peux-tu en avoir plus ?

C'est en plein ça, je veux dupliquer les lignes pour lesquelles il en colonne K des informations séparées par une virgule. Desolé si mes explications ne sont pas très claires. En réalité je peux avoir jusqu'à 4 valeur séparée par une virgule dans la colonne K.

Merci

re

En réalité je peux avoir jusqu'à 4 valeur séparée par une virgule dans la colonne K

Heu cela me parait pas possible d'avoir 4 valeurs en K puisque K est le résulat des infos dans tes colonne F et H.

A moins que tu puisses avoir des virgules dans ces deux colonnes F et H ??

A te relire

Voici à quoi ressemble mon vrai fichier (Je t'enverrais bien le vrai fichier mais il est pas mal trop lourd). J'ai quatre colonne avec une option à cocher au lieu de 2. Avec les nouvelles colonnes que j'ai rajouté, ma formule en S2 ne fonctionne plus.

Merci

Re

Il faut d'abord regler le souci de ta formule.

Quel est la règle ?? La colonne S se complète en fonction des X trouvés en F, I, K, M ??

Ex : si tu as 4 x dans ces colonnes que dois tui trouver en S

A te relire

Oui la colonne S fonctionne avec les X trouvés en F,I,K,M.

Si j'ai un X dans la colonne G je veux avoir la valeur de F en S, si j'ai un X dans la colonne I je veux avoir la valeur de H en S, . . .

Dans la colonne S, je vais donc avoir entre 1 et 4 valeurs.

Merci

re,

Y a-t-il une raison des colonnes N, O, P, Q et R. En gros pourquoi comptes tu les caractères des colonnes qui au final ne contiennent qu'un X

A te relire

Edit Dan : il faudrait que tu me dises aussi si la colonne I peut avoir un "x" quand la colonne G n'en a pas. De même pour les suivantes.

Tout fonctionne à merveille, mais lorsque j'essaye de l'insérer dans mon vrai fichier, il y-a certain détails que je n'arrive pas à programmer.

Voici la situation:

De ma feuille INSPECTION je dois transfèrer les valeurs des cellules B à E ainsi que la colonne P si j'ai un "x" dans la colonne G (non-conforme) et ensuite si j'ai des "x" dans les colonnes I,K,M,O je dois dupliquer mes lignes comme dans l'exemple que j,avais joint à mon premier message.

Je joint avec ce message une partie de mon vrai fichier afin de t'aider à comprendre la situation.

Merci

16classeur2.xlsm (175.82 Ko)

re,

je dois transfèrer les valeurs des cellules B à E ainsi que la colonne P si j'ai un "x" dans la colonne G

Lorsque tu parles de transférer, dois-tu les conserver dans la feuille inspection ?

La colonne B contient des cellules fusionnées....cela ne fait pas bon ménage avec les codes VBA.

A te relire

Je dois les conserver dans la feuille INSPECTION

Re,

ensuite si j'ai des "x" dans les colonnes I,K,M,O je dois dupliquer mes lignes comme dans l'exemple que j,avais joint à mon premier message.

Est-il possibled 'avoir des"X" sans avoir de X dans la colonne G.

JE te pose cette question car dans ta feuille Rapport il y a des formules dont les données viennent de ta feuille Inspection

Si tu dupliques tes lignes enfeuille inspection, tu vas adapter ta feuille Rapport et la recopie des valeurs B à E sera adaptée.

A te relire

Il doit absolument y avoir un "X" en G pour en avoir dans les colonnes jaunes.

Re,

Dans la feuille Rapport, la donnée se trouvant en colonne F vient de quelle colonne dans la feuille Inspection.

Sinon j'essaie toujours de comprendre pourquoi tu dupliques les lignes dans ta feuille Inspection

A te relire

Rechercher des sujets similaires à "dupliquer lignes aves conditions"