Souci avec un Rows().insert [Résolu]

Signaler
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
21 septembre 2018
-
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
21 septembre 2018
-
Bonjour,

Je travail avec 2 sorte de tableau. Je parcours 2 colonne d'un tableau et si la cellule est rempli, je copie cette ligne pour la coller sur un autre tableau.

Mon parcours de colonne se fait trés bien et quand je rajoute mon Rows().insert le code est complétement perdu :calim2: !!!!!
Je m'explique : adepte des msgbox pour savoir si tout se passe bien, j'ai mis un msgbox pour afficher la cellule rempli, la tout va bien. Quand je rajoute mon insert, ma boucle ne tourne plus rond lol et je me rajoute 2 fois plus de lignes !!!

Extrait de mon code

Sub MAJ()

    Dim ligneTab2 As Integer
    Dim ligneAjout As Integer
    Dim lcopy As Range
    Dim lpaste As Range

    
    For ligneTab2 = Range("LigneTitreA").Row + 2 To Range("LigneFinA").Row - 1
        ligneAjout = Range("LigneFinR").Row - 1
        If Cells(ligneTab2, Range("C_Total_HT").Column) <> "" Or Cells(ligneTab2, Range("C_Total_HT").Column) <> "" Then
            'MsgBox Cells(ligneTab2, Range("C_Total_HT").Column)
            'MsgBox Range(Cells(ligneTab2, Range("C_Societe").Column), Cells(ligneTab2, Range("C_Remarques_A").Column)).Select
            Rows(ligneAjout).Insert
            'Set lcopy = Range(Cells(ligneTab2, Range("C_Societe").Column), Cells(ligneTab2, Range("C_Remarques_A").Column))
        End If
    Next
End Sub


Peut être une erreur inattention ou alors je fais une manip qui n'est pas la bonne.

Merci de votre aide

5 réponses

Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
21 septembre 2018

Re
Juste pour dire que d'une part le code que j'ai mis au dessus j'ai pas mis le bon et d'autre part j'ai compris mon erreur GGGrrrrr.
Forcément si je rajoute une ligne bien plus haut toutes mes cellules descendent d'un cran.
Le boulet et encore une fois msgbox c'est utile lol
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Bonjour,

en allant dans ce sens (du haut vers le bas) tu modifies sans cesse le nombre de lignes, leur N°, etc... et te fais des croche-pieds.

Il te faut aller dans l'autre sens dans ta boucle For ... Next (du bas vers le haut en utilisant Step -1)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
21 septembre 2018

Merci je vais voir ça.
Messages postés
54
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
21 septembre 2018

Maintenant au lieu d'avoir plus de ligne en insert j'en ai moins car il saute 2 ligne et ne s'arrête pas au bon endroit

    For ligneTab2 = Range("LigneFinA").Row - 1 To Range("LigneTitreA").Row + 2 Step -1
        
        If Cells(ligneTab2, Range("C_Total_HT").Column) <> "" Or Cells(ligneTab2, Range("C_Total_HT").Column) <> "" Then
            MsgBox Cells(ligneTab2, Range("C_Total_HT").Column)
            'MsgBox Range(Cells(ligneTab2, Range("C_Societe").Column), Cells(ligneTab2, Range("C_Remarques_A").Column)).Select
            ligneAjout = Range("LigneFinR").Row - 1
            Rows(ligneAjout).Insert
            'Set lcopy = Range(Cells(ligneTab2, Range("C_Societe").Column), Cells(ligneTab2, Range("C_Remarques_A").Column))
        End If
    Next
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
ouvre donc déjà (ce devrait être un réflexe automatique) ton aide VBA sur la méthode Insert et tu comprendras ce qui arrive si tu n'utilises pas l'argument Shift



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est