copier coller sous condition

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

Profane

XLDnaute Occasionnel
Bonjour le Forum,
voila j' ai un soucis avec cette macro suivante
qui devrait me permettre de copier une ligne entiere si dans sa colonne E figure le mot libre
cette copie devant s effectuer sur l onglet test

voici le bout de code

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Range

On Error GoTo FinSub
For Each z In Target
If Not Application.Intersect(Target, Range("E2:E65536")) Is Nothing Then
If Target = "LIBRE" Then
Target.EntireRow.Copy Destination:=Worksheets("Test").Range("B65536").End(xlUp).Offset(1, 0)
End If
End If
Next z
FinSub:
End
End Sub

si quelqu un peux me dire où est l'erreur 🙂
merci d'avance

@++
 
Re : copier coller sous condition

Bonjour, si je comprends ton code, tu voudrais recopier les lignes contenant "libre" en colonne E.
Je suppose, vu la méthode employée, que tu écris "libre" dans une cellule de la colonne E, puis que tu fais une recopie incrémentée vers le bas, ou que tu utilises la méthode CTRL + Entrée pour remplir tes cellules.
Un petit point dans ton code :
Target.EntireRow.Copy Destination:=Worksheets("Test").Range("B65536").En d(xlUp).Offset(1, 0)

Tu copies une ligne entière, et tu veux la coller à partir de la colonne B (ben ça sera pas possible, il manque une colonne)
Ensuite, tu fais une recherche sur Target, c'est sur Z qu'il faut faire, et non dans Target, mais dans Selection. et enfin, tu désires copier Target, c'est Z.EntireRow qu'il faut copier.
Ton code modifié :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Range

On Error GoTo FinSub
For Each z In Selection
If Not Application.Intersect(Target, Range("E2:E65536")) Is Nothing Then
If z.Value = "libre" Then
z.EntireRow.Copy Destination:=Worksheets("Test").Range("A65536").End(xlUp).Offset(1, 0)
End If
End If
Next z
FinSub:
End
End Sub

Edit :
Maintenant, si tu veux bsolument copier à partir de la colonne B dans ta feuille("Test"), tu remplaces cette ligne :
z.EntireRow.Copy Destination:=Worksheets("Test").Range("A65536").End(xlUp).Offset(1, 0)

par celle-ci :

z.EntireRow.Resize(, 255).Copy Destination:=Worksheets("Test").Range("B65536").End(xlUp).Offset(1, 0)

sur une seule ligne
 
Dernière édition:
Re : copier coller sous condition

re, en regardant dans le forum
j'ai trouve ca :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cel As Range 'déclare la variable cel
Dim dest As Range 'déclare la variable dest

'boucle sur les cellules pouvant contenir
For Each cel In Range("E2:E65536")

'condition : si la valeur de la cellule contient la valeur
If cel.Value = "libre" Then
Set dest = Sheets("Analyse").Range("B65536").End(xlUp).Offset(1, 0) 'définit la variable dest
cel.EntireRow.Resize(, 255).Copy Destination:=dest 'copy la ligne de la cellule
End If 'fin de la condition

Next cel 'prochaine cellule de "ta_plage"
End Sub

et ca fonctionne
mais la je me trouvbe devant un autre soucis et je vais faire un autre post
@++
 
- 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
839
Réponses
4
Affichages
549
Retour