Couper coller une ligne d'une feuille dans une autre feuille VBA [Résolu/Fermé]

Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
- - Dernière réponse : eriiic
Messages postés
23107
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2019
- 30 déc. 2014 à 15:25
Bonjour tout le monde,

si quelqu'un peut m'aider :D
J'aimerai faire une macro qui coupe une ligne dès que la cellule est en rouge : par exemple si la cellule P16 est en rouge alors toute la ligne 16 soit coupée et collée vers la feuille 3
j'ai essayé ce code :

Sub ligne()

Sheets("Feuil1").Select
LigneFeuille3 = 2
NbLignes = 20000
For i = 1 To NbLignes
If Cells(i, 16).Interior.ColorIndex = 3 Then
Cells(i, 16).EntireRow.Cut

Sheets("Feuil3").Select
Cells(LigneFeuille3, 1).EntireRow.Select
ActiveSheet.Paste
Sheets("Feuil1").Select
LigneFeuille3 = LigneFeuille3 + 1

End If
Next i

End Sub


mais ça n'a pas marché il me donne un message d'erreur: erreur d'exécution '1004': erreur définié par l'application ou par l'objet

voilà tout , :D


Afficher la suite 

3 réponses

Messages postés
23107
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2019
5785
0
Merci
Bonjour,

Sub ligne() 
    Sheets("Feuil1").Select 
    LigneFeuille3 = 2 
    NbLignes = 20000 
    For i = NbLignes To 1 Step -1 
        If Cells(i, 16).Interior.ColorIndex = 3 Then 
            Rows(i).Copy Sheets("Feuil3").Rows(LigneFeuille3) 
            LigneFeuille3 = LigneFeuille3 + 1 
            Rows(i).Delete Shift:=xlUp 
        End If 
    Next i 
End Sub 
De plus, lorsque tu supprimes des lignes tu dois faire ta boucle en partant du bas sinon la ligne suivant celle supprimée n'est pas vue (ou alors faire i=i-1)

Et si tes cellule rouges en P contiennent une valeur, rechercher la ligne de la dernière valeur de la colonne pour limiter ta boucle :
derlig=cells(rows.count,"P").end(xlup).row
For i = derlig To 1 Step -1
Si P n'a pas toujours une valeur tu peux faire cette recherche sur la colonne qui contient des valeurs jusqu'en bas (A par exemple).

eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
3
0
Merci
merci bcoup ERIC
ça marche très bien sauf qu'il y a un petit souci :D
en fait cette macro va s'exécuter à chaque fois que je Click sur un bouton ( je connais djà le code pour ça)
mais en fait quand je rééxecute la macro bein ça m'écrase les ligne qui ont djà étaient coupés et collés
eriiic
Messages postés
23107
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2019
5785 -
Re,

Si la colonne A est remplie complètement (ou en choisir une autre) :
LigneFeuille3=[Feuil3].cells(rows.count,"A").end(xlup).row+1

eric
sikasika
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
3 -
merci beaucoup Eric , ça a marché
Messages postés
7
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
30 décembre 2014
0
Merci
Bonjour,

Cette formule m'interresse mais j'ai une petite modification a apporté comment faire si je veux que lq ligne choisie soit la derniere ligne où il y a quelque choise d'ecrit?

Merci
eriiic
Messages postés
23107
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2019
5785 -
Bonjour,

ben tu enlèves le +1 de la fin.
eric
Olaz_funk
Messages postés
7
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
30 décembre 2014
-
ok merci pour la réponse.
Je me suis peut etre mal fait comprendre mais c'est la condition qui change.
En fait au lieu de couper la ligne en rouge je souhaiterai couper la derniere ligne ecrite et la coller ailleur dans la meme page?
eriiic
Messages postés
23107
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 décembre 2019
5785 -
La dernière ligne utilisée de la colonne A de la feuille active est :
cells(rows.count,"A").end(xlup)

eric