Ranger automatiquement ligne dans différentes feulles

Bonjour,

voilà mon souci.

J'ai un tableau qui possede plusieurs lignes.

J'aimerai faire une macro qui m'extrait et range ldans des feuilles différentes, les lignes de ce tableau en fonction d'une valeur texte d'une colonne.

Dans l'exmple que j'ai joint il n'y a que deux valeurs.

Dans mon cas, j'en aurais plusieurs ( 7) et mon tableau sera plus proches des 10000 lignes mélangés.

maintenant je ne connais pas bien vba, et me difficulté et de me mettre sous forme de prog, ma manière de faire....qui en est une parmi tant d'autre!!!!

Du coup je pensais créer des variables (une pour chaque feuille)

puis créer un compteur de ligne qui remonte de en en 1 et qui scrute la bonne colonne et déplace la ligne en fonction de cette valeur dans la bonne feuille.

Sheets.Add

ActiveSheet.Name = "Metz"

Sheets.Add

ActiveSheet.Name = "Meuse"

Lignemax = Sheets(1).Cells(Rows.Count, "H").End(xlUp).Row 'compte les ligne du tableau

For i = Lignemax To 1 Step -1

'if cells(i,"H") =.value "Metz" then 'condition de recherche de la variable'

'Cut(i).go to Sheet "metz"

' End If

End Sub

Je suis en train de me former sur les variables.

Merci de se pencher sur mon problème


avec le fichier c'est mieux!!!!

Bonjour,

à tester.

Cordialement.

13deplacerligne.xlsm (12.68 Ko)

Bonjour,

alors ça marche du tonnerre de dieu!!!!!

Par contre je vais encors demander un truc :

pouvez me dire si j'ai bien tout compris le fonctionnement des lignes de codes:

Sub creation()

debut:

Z = 1 'variable qui definit les lignes?

nom_feuille = Range("h2") 'definition de la colonne h2 commme 'variaible' nom feuille

If nom_feuille = "" Then GoTo fin: 'si le la colonne h2 est vide allez au message box

Sheets.Add After:=Sheets(Sheets.Count) ' création feuille....?????

ActiveSheet.Name = nom_feuille 'renommage feuille active

Sheets(1).Activate 'je ne comprends!!!!!

derligne = Range("a" & Rows.Count).End(xlUp).Row 'variable qui va permettre le décompte a partir de fin de tableau

For i = derligne To 2 Step -1 'on remonte jusqu'à la ligne2

If Range("h" & i) = nom_feuille Then '??????????

Rows(i).Copy Destination:=Sheets(nom_feuille).Range("a" & Z) 'copy la ligne i....?????

Rows(i).Delete 'supprime la ligne

Z = Z + 1 'chgt de ligne

End If 'fin de boucle

Next i 'nvlle ligne

GoTo debut 'retour en haut de la boucle

fin:

MsgBox ("Rangement terminé") ' petite cerise sur le gateau!!!!

End Sub

Voila, je vais essayer de l'appliquer pour mon cas et je vous tiens au courant.

Mais ça à l'air bien partit!!!

Encors merci bigdaddy

Re,

je te repost le fichier mais cette fois commenté.

Cordialement.

13deplacerligne.xlsm (13.86 Ko)

Bonjour,

je viens de retester pour mon cas mais il bloque et marque "impossible de renommer une feuille comme une autre feuille,....." et bloque sur la ligne

ActiveSheet.Name = nom_feuille

ce que je ne comprends c'est que sur l'exemple cela fonctionne.

Il cree bien la feuille, mais rien d'autre. pas de copie de ligne!!!!

a comprends pas!!!!

A mon avis tu dois avoir déjà des feuilles de créer reprenant des noms de la colonne H, supprime toutes tes feuilles sauf ta base de données et relance la macro pour voir.

ben ecoute non!!!!

je vais remettre ça à lundi, car la j'ai le cerverau qui fume!!!

et je te dit quoi!!!

en tout cas encors merci!!!

bon we a toi

Au pire transmet moi ton fichier en mp si tu le souhaites.

Bon week end.

Rechercher des sujets similaires à "ranger automatiquement ligne differentes feulles"