[VBA]Déplacer lignes dans une autre feuille

Fermé
Detsou Messages postés 4 Date d'inscription jeudi 28 juillet 2011 Statut Membre Dernière intervention 29 juillet 2011 - 29 juil. 2011 à 11:09
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 1 août 2011 à 08:38
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 !
A voir également:

5 réponses

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
29 juil. 2011 à 11:14
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
Detsou Messages postés 4 Date d'inscription jeudi 28 juillet 2011 Statut Membre Dernière intervention 29 juillet 2011
29 juil. 2011 à 11:22
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
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
29 juil. 2011 à 11:32
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
Detsou Messages postés 4 Date d'inscription jeudi 28 juillet 2011 Statut Membre Dernière intervention 29 juillet 2011
Modifié par Detsou le 29/07/2011 à 11:43
" 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
1 août 2011 à 08:38
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