Copies de lignes d'une feuille à l'autre si une condition est "vrai"

  • Initiateur de la discussion Initiateur de la discussion Lucabelga
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lucabelga

XLDnaute Nouveau
Bonjour,
Dans une simple liste j'ai placé un bouton de sélection qui génère un TRUE ou FALSE en colonne 9.
L'idée est de copier toutes les lignes de la Feuille1 ayant en colonne 9 "TRUE" vers la feuille 2 sans laisser de lignes vides.
Ici je le fais avec un bouton de commande mais ce pourrait être systématique aussi.
Ceci de manière à reprendre en Feuille2 uniquement les articles sélectionnés (exemple en Feuille3 "Devraitfaire").
Une solution semblait se dessiner avec un exemple sur youtube qui fonctionne effectivement dans le cas d'une liste d'exemples sans formatage mais si on reprend l'idée dans une vrai feuille avec mise en page et lignes vides, le système retourne systématiquement un "RUN TIME ERROR".
Quelqu'un aurait une solution plus simple (peut-être sans VBA) ou une idée pour résoudre cet exemple qui devrait aider pas mal d'utilisateurs?
En vous remerciant.
Voici le code:
a= worksheets("sheet1").Cells(Rows.Count,1).End(x1up).Row
For i=2 to a
If Worksheets("Sheet1").Cells(i,9).Value="TRUE" then

Worksheets("Sheet1").Rows(i).copy
Worksheets("sheet2").Activate
b=Worksheets("worksheet2").Cells(Rows.Count,1).End(x1Up).Row
Worksheets("sheet2").Cells(b+1,1).Select
ActiveSheet.Paste
Worksheets("sheet1").Activate
End If
Next

Application.CutCopyMode = False
ThisWorkbook.worksheets("Sheet1".Cells(1,1).Select
End Sub
 

Pièces jointes

Hello,

Tu peux peut être partir sur une idée comme ça :

VB:
Sheets("Sheet1").Activate

For i = 2 To Range("A6553").End(xlUp).Row

        If Cells(i, 9) = "truc" Then ' Ici tu mets ta condition
        
        Range(Cells(i, 1), Cells(i, 8)).Copy
        derligne = Sheets(2).Range("A65535").End(xlUp).Row + 1
          
        Sheets(2).Activate
        Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
        
        End If
Next i

Enjoy
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
813
Retour