Repérer une ligne, la copier et la coller dans une autre feuille
Résolu
Ecrelinf
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
Ecrelinf Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Ecrelinf Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous, c'est encore moi !
Je rencontre quelques difficultés sur VBA. En effet, j'ai deux feuilles : feuille1 et feuille2.
Je souhaiterais réaliser une macro qui me permettrait de :
- Dans la feuille1 : Copier les lignes dont : A<>"" ET K=""
- Dans la feuille2 : Coller ces lignes les unes après les autres.
Actuellement j'ai essayé ça :
Lorsque j'exécute, la dernière ligne qui remplit les conditions voulues est alors copiée sur la ligne 2 de ma feuille2, bien que j'aie plusieurs ligne qui remplissent les-dites conditions.
J'ai donc tenté autre chose :
Et donc là lorsque j'exécute, ce n'est plus la dernière mais la première ligne remplissant les conditions qui est copiée dans les lignes 2 à 100 ...
Quelqu'un aurait-il une idée de comment résoudre ce mic-mac ? Ah et je suis débutant sur vba donc je passe très certainement à côté de quelque chose d'énorme hein ^^'
Merci d'avance !
Ecrelinf
Je rencontre quelques difficultés sur VBA. En effet, j'ai deux feuilles : feuille1 et feuille2.
Je souhaiterais réaliser une macro qui me permettrait de :
- Dans la feuille1 : Copier les lignes dont : A<>"" ET K=""
- Dans la feuille2 : Coller ces lignes les unes après les autres.
Actuellement j'ai essayé ça :
Dim p As Long
With Worksheets("Feuille1")
For p = 2 To j - 1 'j-1 est la dernière ligne du tableau qui
'm'intéresse, j'ai déjà fait le nécessaire
If Range("K" & p).Value = "" And Range("A" & p) <> "" Then
Rows(p).Copy
Sheets("Feuille2").Select
Range("A2").Select
ActiveSheet.Paste
End If
Next p
End With
Lorsque j'exécute, la dernière ligne qui remplit les conditions voulues est alors copiée sur la ligne 2 de ma feuille2, bien que j'aie plusieurs ligne qui remplissent les-dites conditions.
J'ai donc tenté autre chose :
Dim p As Long
Dim a As Long
With Worksheets("Feuille1")
For p = 2 To j - 1 'j-1 est la dernière ligne du tableau qui
'm'intéresse, j'ai déjà fait le nécessaire
If Range("K" & p).Value = "" And Range("A" & p) <> "" Then
Rows(p).Copy
Sheets("Feuille2").Select
For a = 1 To 100
If Range("A" & a).Value = "" Then
Rows(a).Select
ActiveSheet.Paste
End If
Next a
End If
Next p
End With
Et donc là lorsque j'exécute, ce n'est plus la dernière mais la première ligne remplissant les conditions qui est copiée dans les lignes 2 à 100 ...
Quelqu'un aurait-il une idée de comment résoudre ce mic-mac ? Ah et je suis débutant sur vba donc je passe très certainement à côté de quelque chose d'énorme hein ^^'
Merci d'avance !
Ecrelinf
A voir également:
- Repérer une ligne, la copier et la coller dans une autre feuille
- Comment copier une vidéo youtube - Guide
- Aller à la ligne dans une cellule excel - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
2 réponses
Bonjour,
Tu dois gérer l'incrémentation au niveau de la feuille 2 en fonction de la réalisation des conditions sur la feuille 1 (tu collais la même ligne sur les lignes 1 à 100) :
A+
Tu dois gérer l'incrémentation au niveau de la feuille 2 en fonction de la réalisation des conditions sur la feuille 1 (tu collais la même ligne sur les lignes 1 à 100) :
Dim ligne_copier As Long
Dim ligne_coller As Long
ligne_coller = 2
With Worksheets("Feuille1")
For ligne_copier = 2 To j - 1 'j-1 est la dernière ligne du tableau qui
'm'intéresse, j'ai déjà fait le nécessaire
If .Range("K" & ligne_copier).Value = "" And .Range("A" & ligne_copier) <> "" Then
.Rows(ligne_copier).Copy
Sheets("Feuille2").Select
Rows(ligne_coller).Select
ActiveSheet.Paste
ligne_coller = ligne_coller + 1
End If
End If
Next p
End With
A+
Décidemment Zoul, toujours là pour me tirer d'affaires ! :) Heureusement que tu ne bosses pas avec moi sinon je te serai redevable à vie en café !
Merci tout fonctionne nickel !
Mais ma curiosité me pousse à te demander quelle est la différence entre un .Range et un Range (en gros à quoi sert le point devant le range ? ou le rows)
Merci tout fonctionne nickel !
Mais ma curiosité me pousse à te demander quelle est la différence entre un .Range et un Range (en gros à quoi sert le point devant le range ? ou le rows)
Bien vu pour le point.
Quand tu utilises With Worksheets("Feuille1"), c'est pour éviter d'écrire Worksheets("Feuille1"), donc dans un With le point indique que c'est un attribut du Worksheet. Si tu ne mets pas le point, je crois que c'est la feuille active.
With Worksheets("Feuille1")
If .Range("K" & ligne_copier).Value = "" And .Range("A" & ligne_copier) <> "" Then .Rows(ligne_copier).Copy
End With
<=>
If Worksheets("Feuille1").Range("K" & ligne_copier).Value = "" And Worksheets("Feuille1").Range("A" & ligne_copier) <> "" Then Worksheets("Feuille1").Rows(ligne_copier).Copy
Quand tu utilises With Worksheets("Feuille1"), c'est pour éviter d'écrire Worksheets("Feuille1"), donc dans un With le point indique que c'est un attribut du Worksheet. Si tu ne mets pas le point, je crois que c'est la feuille active.
With Worksheets("Feuille1")
If .Range("K" & ligne_copier).Value = "" And .Range("A" & ligne_copier) <> "" Then .Rows(ligne_copier).Copy
End With
<=>
If Worksheets("Feuille1").Range("K" & ligne_copier).Value = "" And Worksheets("Feuille1").Range("A" & ligne_copier) <> "" Then Worksheets("Feuille1").Rows(ligne_copier).Copy