Copier ligne dans autre feuille si cellule = oui

  • Initiateur de la discussion Initiateur de la discussion robbi baggio
  • 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 !

R

robbi baggio

Guest
Bonjour,

je souhaiterai copier une ligne dans une autre feuille (PdC back up) si back up = Oui

Vous trouverez ci-joint le fichier.
 

Pièces jointes

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

Bonsoir à tous

Le copier/coller du code VBA présent dans mon message précédent dans le fichier sur ton disque dur devrait suffire.

Et en ajoutant ces deux tutoriels, ya plus qu'à mouiller la chemise , robbi😉
Copier un module de macro dans un autre classeur - Excel
Exécuter une macro - Excel

EDITION
:
Tu vois, Robert, parfois tu carambolages en tête 😉 [à 60 secondes prêt]

robbi
Maintenant avec les conseils bleutés de Robert et mes liens, tu ne peux que mettre les mains dans le cambouis. 😉




 
Dernière édition:
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.

je vous joins à nouveau le fichier
 

Pièces jointes

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
 
Dernière édition:
Re : Copier ligne dans autre feuille si cellule = oui

OK ça marche,

par contre j'ai le problème suivant, à chaque fois que je change une info dans l'onglet back-up ça recopie tout le tableau à chaque fois (voir fichier
 

Pièces jointes

Re : Copier ligne dans autre feuille si cellule = oui

Bonjour le fil, bonjour le forum,

Tu as rajouté une ligne vide au dessus du tableau ! Évidemment, le code n'est plus adapté. C'est pénible ces posts... Je passe la main...
 
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

PS: Test OK sur mon PC avec ton fichier exemple.
 
- 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.

Discussions similaires

Réponses
4
Affichages
231
Retour