[VBA]Déplacer lignes dans une autre feuille

Detsou Messages postés 4 Statut Membre -  
melanie1324 Messages postés 1561 Statut Membre -
Bonjour,

Excusez-moi, mais c'est sans doute une question qui revient souvent, j'en ai vu beaucoup en faisant une recherche, cependant aucune ne répondait vraiment à mon cas.

Alors voilà mon problème : Je cherche à déplacer plusieurs lignes dans une autre feuille d'un même classeur sous excel, sous conditions.

La condition étant : " cellule non vide ".

Ma colonne est la colonne Q, je voudrais que pour toutes cellules non vides, les lignes de ces cellules soient déplacés dans une autre feuille, et à la suite à partir de la ligne 3.

J'ai essayé plusieurs codes infructueux pour l'instant, je n'ai donc aucune réelle base à vous montrer sur laquelle travailler...

En espérant qu'on puisse m'aider, merci d'avance !

5 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    voici ton code

    sub déplacer ()

    j=3

    for i =2 to 10000 'de la deuxième ligne à la 10000

    if sheets("feuilledetacolonneQ").cells(i,18) <> "" 'remplaces feuilledetacolonneQ par ton nom de feuille ou se situe ta fameuse colonne q

    sheets("feuilledetacolonneQ").select
    rows.cut
    sheets("Feuille arrivée").select 'remplaces feuille arrivée par ton nom de feuille ou tes lignes doivent êtres déplacées

    cells(j,1).select
    activesheet.paste
    j=j+1
    end if
    next i

    end sub
    0
  2. Detsou Messages postés 4 Statut Membre
     
    Merci pour la réponse rapide. Cependant, j'ai quelques problèmes :

    Erreur d'exécution '1004':

    Cette sélection n'est pas valide.
    Raisons possibles:

    - Les zones de copie et de collage ne peuvent se superposer que si elles sont de dimension et de forme identiques.
    - Si vous utilisez la commande Créer du menu Insertion Nom, la ligne ou la colonne qui contiennent les noms proposés ne seront pas incluses.


    Sachant que j'ai dû modifié le code parce qu'Excel me disait qu'il y avait une erreur de base. Voilà ce qu'il donne à la fin :

    Sub déplacer()
    
    j = 3
    For i = 2 To 10000
    'de la deuxième ligne à la 10000
    
    If Sheets("feuil2").Cells(i, 18) <> "" Then
    'remplaces feuilledetacolonneQ par ton nom de feuille ou se situe ta fameuse colonne q
    
    Sheets("feuil2").Select
    Rows.Cut
    Sheets("feuil3").Select
    'remplaces feuille arrivée par ton nom de feuille ou tes lignes doivent êtres déplacées
    
    Cells(j, 1).Select
    ActiveSheet.Paste
    j = j + 1
    End If
    Next i
    
    End Sub
    


    ( J'ai du rajouté un Then, après le If Sheets("feuil2") .... )
    0
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    je sais pourquoi, un erreur de débutante :
    Sub déplacer()

    j = 3
    For i = 2 To 10000
    'de la deuxième ligne à la 10000

    If Sheets("feuil2").Cells(i, 18) <> "" Then
    'remplaces feuilledetacolonneQ par ton nom de feuille ou se situe ta fameuse colonne q

    Sheets("feuil2").Select
    Rows(i).Cut
    Sheets("feuil3").Select
    'remplaces feuille arrivée par ton nom de feuille ou tes lignes doivent êtres déplacées

    Cells(j, 1).Select
    ActiveSheet.Paste
    j = j + 1
    End If
    Next i

    End Sub
    0
  4. Detsou Messages postés 4 Statut Membre
     
    " Impossible de modifier une cellule fusionnée "

    Après quoi, le " Rows(i).Cut " est surligné en jaune. Je ne comprends pas vraiment, je n'ai pas de cellule fusionnée...

    ( Aussi, c'est la colonne Q, donc c'est Cells(i, 17) non ? )
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. melanie1324 Messages postés 1561 Statut Membre 156
     
    bonjour,

    on va contourner le pb :

    Sub déplacer()

    j = 3
    do while i <= 10000
    'de la deuxième ligne à la 10000

    If Sheets("feuil2").Cells(i, 17) <> "" Then
    'remplaces feuilledetacolonneQ par ton nom de feuille ou se situe ta fameuse colonne q

    Sheets("feuil2").Select
    Rows(i).copy
    Sheets("feuil3").Select
    'remplaces feuille arrivée par ton nom de feuille ou tes lignes doivent êtres déplacées

    Cells(j, 1).Select
    ActiveSheet.Paste
    Sheets("feuil2").Select
    Rows(i).Delete Shift:=xlUp
    i=i-1
    j = j + 1
    End If
    i=i+1
    loop

    End Sub
    0