Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Re : Copier ligne dans autre feuille si cellule = oui
Bonsoir à tous
robbi baggio (Bienvenue sur le forum)
Une possibilité en VBA (avec le filtre automatique)
Code:
Sub Macro1()
Dim pf As Range, dl&
dl = Cells(Rows.Count, "K").End(3).Row
Sheets("PdC Initial").Range("$A$1:$O$" & dl).AutoFilter Field:=11, Criteria1:="Oui"
Set pf = Sheets("PdC Initial").[_FilterDataBase]
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy _
Sheets("PdC back up").Cells(Rows.Count, "K").End(3).Offset(, -10)(2)
End Sub
NB: test OK avec ton fichier exemple tel qu'il est.
Il faudra adapter le code quand d'autres cellules que celles de la colonne K ne seront plus vides. 😉
Re : Copier ligne dans autre feuille si cellule = oui
Bonsoir Robbi, Staple, bonsoir le forum,
Ne serait-il pas plus simple que tu copies le code donné par Staple et le colles dans un module standard de ton propre fichier ?
la procédure :
- ton fichier ouvert,
- Copie le code,
- Ouvre VBE (Visual Basic Editor) par la combinaison de touches [Alt] + [F11] (idem pour fermer VBE),
- Menu Insertion/Module,
- Là où le curseur clignote tu colles le code.
Tu auras le fameux fichier que tu demandes... !
p.s. Robbi Baggio c'est pas un coureur cycliste ça ?
Re : Copier ligne dans autre feuille si cellule = oui
bonjour,
ça ne marche pas. Ma requête exacte est de copier la ligne dans l'onglet pdc back up lorsque la cellule back up est égale à oui
dans l'onglet pdc initial.
Re : Copier ligne dans autre feuille si cellule = oui
Bonjour le fil, bonjour le forum,
Je ne comprends pas ce qui ne fonctionne pas ? Chez moi le code de Staple fonctionne parfaitement bien... Il a juste oublié de supprimer le filtre automatique à la fin...
Comme je ne connais pas sa méthode je t'ai refais un code mais c'est sensiblement la même chose que celui de Staple :
Code:
Sub Macro1()
Dim I As Object 'déclare la variable I (onglet Initial)
Dim B As Object 'déclare la variable B (onglet Back up)
Dim dl As Long 'déclare la variable DL (Dernière ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PLV (Plage Visible)
Set I = Sheets("PdC Initial") 'définit l'onglet I
Set B = Sheets("PdC back up") 'définit l'onglet B
dl = I.Cells(Application.Rows.Count, 11).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 11 (=K) de l'onglet I (à adapter à ton cas)
Set PL = I.Range("K2:K" & dl) 'définit la plage PL
I.Range("A1").AutoFilter Field:=11, Criteria1:="Oui" 'filtre la colonne 11 (=K) avec "Oui" comme critère
Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV des cellules visible (non filtrées) de la plage PL
PLV.EntireRow.Copy B.Cells(Application.Rows.Count, 11).End(xlUp).Offset(1, -10) 'copie les lignes entières de la plage PLV et les colle dans la première cellule vide de la colonne 11 (=K) de l'onglet B
I.Range("A1").AutoFilter 'supprime le filtre automatique
End Sub
Re : Copier ligne dans autre feuille si cellule = oui
Il y a toujours un problème au niveau du fichier lorsque je rajoute un oui dans l'onglet PdC initiale et que j'exécute la macro,cela recopie le tableau à chaque fois, quelqu'un peut-il m'aider ?
Merci
Re : Copier ligne dans autre feuille si cellule = oui
Bonjour à tous
robbi baggio
Comment fais-tu pour tester les macros?
Parce que tu joins des fichiers *.xlsx.
Or ceux-ci ne peuvent contenir de macros.
Si tu veux copier, une ligne à la fois, il faut passer par une procédure événementielle.
NB: à mettre dans le code de la feuille concernée, pas dans un module.
(voir ci-dessous)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 11 And Target.Row > 1 Then
If Target = "Oui" Then
Cells(Target.Row, 1).Resize(, 15).Copy Sheets("PdC back up").Cells(Rows.Count, "K").End(3).Offset(, -10)(2)
End If
End If
End Sub
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.