Couper coller une ligne d'une feuille dans une autre feuille VBA

Résolu
sikasika Messages postés 74 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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.
    0
  2. sikasika Messages postés 74 Statut Membre 3
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    2. sikasika Messages postés 74 Statut Membre 3
       
      merci beaucoup Eric , ça a marché
      0
  3. Olaz_funk Messages postés 7 Statut Membre
     
    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
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      ben tu enlèves le +1 de la fin.
      eric
      0
    2. Olaz_funk Messages postés 7 Statut Membre
       
      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?
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      La dernière ligne utilisée de la colonne A de la feuille active est :
      cells(rows.count,"A").end(xlup)

      eric
      0