Inserer des lignes prédéfinies en fonction d'un critere

14forum.xlsm (100.79 Ko)

Bonjour à tous !
Je suis actuellement en stage, et j'essaye de coder en VBA. Ce nouveau type de codage est nouveau pour moi et me pose des difficultés.
Ci-joint je vous ai mit un fichier Excel réduit afin de respecter les règles de confidentialités de l'entreprise.
Mon "rendu final" est la feuille "LISTE ELECTRICITE".
La feuille "README LISTE ID" référence dans le tableau de droite les informations nécessaires pour compléter la feuille "TEST LISTE ELECTRICITE".
Mon but est que sur la feuille "TEST LISTE ELECTRICITE", en parcourant le filtre N°2 à partir de E9, la macro ajoute automatiquement les lignes qui sont écrites sur la feuille "README LISTE ID".
Exemple :
"TEST LISTE ELECTRICITE" : en "E9" j'ai "FIT"
"README LISTE ID" : on retrouve "FIT" en "O1", je vois qu'il y a 3 lignes :
"Signal analogique mesure de débit"
"Impulsion comptage de débit"
"Information de défaut mesure analogique"
Je dois donc insérer ces 3 lignes en dessous de la ligne 9 dans "TEST LISTE ELECTRICITE" comme on peut le voir dans "LISTE ELECTRICITE".
(Tout en gardant les cellules de A à J pareil que la cellule du dessus).

Quelqu'un peut-il m'aider à résoudre ce problème ? j'ai réussi à trouver quelques informations mais trop peu pour construire un code correct sachant que je ne connais pas trop VBA

Merci

Bonjour,

tiens j'ai réaliser ça c'est dans le module 4 du document (il faut appuyer sur le bouton gris dans le 2eme feuille pour la lancer)

si tu veux que je t'explique, dis le moi

n'oublie pas de mettre résolu si cela résout ton problème

Sub test()

Dim i, j As Long
Dim cherche As Boolean
Dim copie As String

i = 9        'n° de la ligne de la colonne "filtre 2"
j = 11       'n° de la colonne de correspondance
k = 2        'n° de la ligne de la colonne de correspondance
cherche = True
copie = ""

While Cells(i, 5).Value <> ""

    While cherche = True

        If Cells(i, 5).Value = Sheets("README LISTE ID").Cells(1, j).Value Then

            While Sheets("README LISTE ID").Cells(k, j).Value <> ""

                copie = copie + vbNewLine + Sheets("README LISTE ID").Cells(k, j).Value

                k = k + 1

            Wend

            k = 2

            cherche = False
        End If

        j = j + 1

    Wend

    Cells(i, 13).Value = copie
    copie = ""
    j = 11
    i = i + 1
    cherche = True

Wend

End Sub
11forum-modifier.xlsm (100.23 Ko)

Bonjour, je viens de voir votre message, merci beaucoup pour votre réponse.

Cependant je viens de regarder, et en fait ce que je voulais c'est qu'à chaque fois qu'on ajoute des lignes, ce qu'on ajoute s'affiche dans la colonne de : "DESIGNATION" et que le reste de la ligne soit le même que la ligne du dessus. Je pense que c'est juste une petite modification avec : EntireRow.Insert, CopyOrigin:=xlFormatFromRightOrBelow ?? C'est pour droite ou en dessous cette ligne, peut-être qu'il existe pour au-dessus ?

Comme on peut le voir ici :

capture d ecran 2021 06 08 154812

Bonjour,

Je n'avais pas tout compris la première fois maintenant c'est bon.

J'ai refait un programme.

Si tu veux que je t'explique, dis le moi.

n'oublie pas de mettre résolu si cela résout ton problème

15forum-modifier.xlsm (102.77 Ko)

Bonjour,

Encore merci pour cette réponse ! On se rapproche du but final c'est super !

Concernant le code j'ai a peu près comprit sauf pour ton "k" et ton "m" ?

Je viens de rajouter des lignes dans "TEST LISTE ELECTRICITE" et ça ne fonctionne pas quand il voit une ligne grise (enfin une cellule vide plutôt), et est ce qu'on pourrait appliquer de la couleur aux lignes que l'on rajoute ?

Merci encore

Pour le fait que ça s'arrête à chaque ligne vide, il faudrait modifier cette ligne :

While Cells(i, 5).Value <> ""

le k est la variable qui permet de descendre d'une ligne pour récupérer les message quand tu trouve la colonne

le m est une variable que j'ai utilisé pour se décaler d'une case à chaque fois qu'il copie la ligne du dessus

j'ai mis de la couleur pour les nouvelles lignes

par contre j'ai un problème pour qu'il continue après la ligne grise. Lorsque je le fait le excel galère à faire toute les ligne, voir crash.

En plus, certains filtre que tu as mis dans la colonne E n'existe pas et font déconner le programme, donc fait plus attention à ce que tu met.

Pour régler le problème de la galère de excel, tu peux toujours mettre des inputbox pour demander à l'utilisateur à quel ligne commencer. ça prendra plus de temps mais je pense que ça pourrait marcher

D'accord pour les 2 variables, merci

Je viens de regarder et c'est super ! merci beaucoup

En ce qui concerne les erreurs, désolé mais j'ai simplement reprit un modèle de l'entreprise. Je vais regarder pour compléter la nomenclature. Merci

D'accord, je vais regarder alors !

J'avais juste une question dont je trouve pas ma réponse, on ne peut pas écrire :

While Cells(i, 5).Value <> "" And Cells(i+1, 5).Value <> ""

Ou quelque chose qui pourrait ressembler ? Je réfléchis avec les langages qui j'ai pu apprendre tout au long de mes études. Mais en VBA j'ai l'impression que ça n'a pas de sens ?

Merci pour tout

Pour répondre à ta question, si normalement tu peux. Si tu as une erreur, Il faut donner une valeur à i différente de 0.

Sinon, j'ai retesté quelque chose sur le programme et maintenant, il continue au dessus des lignes grises et n'a plus trop de problème.

Met résolue à ton poste en mettant ✓ sur un message

D'accord, je regarderai la prochaine fois que j'essaye alors !

Okay merci, mais je crois que tu t'es trompé de fichier non ? La j'ai un rapport contrôle outillage !

oui, dsl je me suis trompé de fichier,

C'est exactement ce que je voulais merci beaucoup !

J'avais écrit cette commande mais bien sûr qu'il fallait utiliser un "Or", cela fait plus de sens !

While Cells(i, 5).Value <> "" And Cells(i+1, 5).Value <> ""

Encore merci ! Je vais continuer la suite de mon projet, et si j'ai d'autres questions je reviendrai vers vous!

Bonne fin de journée,

Antoine

Bonjour, j'espère que tu vas bien ? Je sais pas si tu verras ce message mais j'ai refait un programme basé sur celui que t'avais fait. Sauf que j'ai l'impression qu'il tourne à l'infini ( je déduis ça car Excel plante). Le programme est le même que le tiens, sauf que je vais chercher dans une autre liste des informations. Cependant j'ajoute une condition qui est que : If Cells(i, 10).Value = "M" alors ça continue. Je n'arrive pas à trouver l'erreur. Merci d'avance test liste m

J'ai trouvé la solution, merci quand même si vous passez par là

Rechercher des sujets similaires à "inserer lignes predefinies fonction critere"