Tri et extraction colonne

Bonjour,

J'ai à ma dispostion un fichier se présentant en 6 colonnes.

La colonne NuméroClient est importante car je dois trier les numéros (ça je sais faire) puis extraire les lignes correspondantes à ce numéro. J'aurais donc besoin d'aide pour réaliser ceci.

Le problème étant que j'ai plusieurs fois le même numéro de client dans la colonne.

Merci bien!

Bonjour,

Quelques questions pour comprendre

  • extraction de quelle colonne (A, B, CD, AA, ???)
  • extraction vers où ?
  • quel numéro de client on choisit pour la ligne si plusieurs numéros identiques

Un fichier sera le bienvenu ....

bonjour,

voici un code qui fait le copie des lignes (triées) avec le même numéro de client en colonne A et les répartit dans des nouvelles feuilles

Sub extract()
' feuille des clients
Set ws1 = Worksheets("clients")
' i ligne client en cours
i = 1
' première ligne avec numéro de client en cours
plc = 1
' numéro de client en cours
nplc = ws1.Cells(plc, 1)
' on boucle sur les lignes clients
While ws1.Cells(i, 1) <> 0
' si numéro de client trouvé sur la ligne <> numéro de client en cours
If ws1.Cells(i, 1) <> nplc Then
 'on ajoute une nouvelle feuille
 Set ws2 = Worksheets.Add
 ws2.Name = nplc
 'on y copie les lignes avec ce numéro de clients
 ws1.Rows(plc & ":" & i - 1).Copy ws2.Cells(1, 1)
 ' on prend note du nouveau numéro de client et de son numéro de prmière ligne
 plc = i
 nplc = ws1.Cells(i, 1)
End If
' on prend la ligne client suivante
i = i + 1
Wend
' traitement pour le dernier client
If i > plc + 1 Then
  'on ajoute une nouvelle feuille
 Set ws2 = Worksheets.Add
 ws2.Name = nplc
 'on y copie les lignes avec ce numéro de clients
 ws1.Rows(plc & ":" & i - 1).Copy ws2.Cells(1, 1)
End If
Set ws1 = Nothing
Set ws2 = Nothing
End Sub
h2so4 a écrit :

bonjour,

voici un code qui fait le copie des lignes (triées) avec le même numéro de client en colonne A et les répartit dans des nouvelles feuilles

Sub extract()
' feuille des clients
Set ws1 = Worksheets("clients")
' i ligne client en cours
i = 1
' première ligne avec numéro de client en cours
plc = 1
' numéro de client en cours
nplc = ws1.Cells(plc, 1)
' on boucle sur les lignes clients
While ws1.Cells(i, 1) <> 0
' si numéro de client trouvé sur la ligne <> numéro de client en cours
If ws1.Cells(i, 1) <> nplc Then
 'on ajoute une nouvelle feuille
 Set ws2 = Worksheets.Add
 ws2.Name = nplc
 'on y copie les lignes avec ce numéro de clients
 ws1.Rows(plc & ":" & i - 1).Copy ws2.Cells(1, 1)
 ' on prend note du nouveau numéro de client et de son numéro de prmière ligne
 plc = i
 nplc = ws1.Cells(i, 1)
End If
' on prend la ligne client suivante
i = i + 1
Wend
' traitement pour le dernier client
If i > plc + 1 Then
  'on ajoute une nouvelle feuille
 Set ws2 = Worksheets.Add
 ws2.Name = nplc
 'on y copie les lignes avec ce numéro de clients
 ws1.Rows(plc & ":" & i - 1).Copy ws2.Cells(1, 1)
End If
Set ws1 = Nothing
Set ws2 = Nothing
End Sub

Merci beaucoup c'est exactement que je recherche à un détail près. J'aimerais que de nouveaux fichiers excel se créent et non des feuilles.

En tout cas merci à toi!

La colonne client étant la colonne B, comment faire pour commencer à trier à partir de celle-ci?

bonjour,

code adapté pour prendre numéro de client en colonne B, (ils doivent être triés) et créer des fichiers plutôt que des feuilles

Sub extract()
' feuille des clients
Set ws1 = Worksheets("clients")
' i ligne client en cours
i = 1
' plc première ligne avec numéro de client en cours
plc = 1
' nplc numéro de client en cours
nplc = ws1.Cells(plc, "B")
' on boucle sur les lignes clients
While ws1.Cells(i, "B") <> 0
' si numéro de client trouvé sur la ligne <> numéro de client en cours
If ws1.Cells(i, "B") <> nplc Then
 'on cree un nouveau classeur ajoute une nouvelle feuille nommé d'après le numéro de client
 Set wb = Workbooks.Add
 Set ws2 = wb.Worksheets(1)
 ws2.Name = "client " & nplc
 'on y copie les lignes avec ce numéro de clients
 ws1.Rows(plc & ":" & i - 1).Copy ws2.Cells(1, 1)

 ' on sauve le classeur créé,nommé d'après le numero de client, dans le répertoire par défaut d'excel
 wb.SaveAs ws2.Name & ".xlsx"
 'on le ferme
 wb.Close

 ' on prend note du nouveau numéro de client et de son numéro de permière ligne

 plc = i
 nplc = ws1.Cells(i, "B")
End If
' on prend la ligne client suivante
i = i + 1
Wend
' traitement pour le dernier client
'on cree un nouveau classeur ajoute une nouvelle feuille
 Set wb = Workbooks.Add
 Set ws2 = wb.Worksheets(1)
 ws2.Name = "client " & nplc
 'on y copie les lignes avec ce numéro de clients
 ws1.Rows(plc & ":" & i - 1).Copy ws2.Cells(1, 1)
 ' on prend note du nouveau numéro de client et de son numéro de prmière ligne

 ' on sauve le classeur créé, dans le répertoire par défaut d'excel
 wb.SaveAs ws2.Name & ".xlsx"
 'on le ferme
 wb.Close
Set ws1 = Nothing
Set ws2 = Nothing
set wb=nothing
End Sub

Je te remercie un milliard de fois et encore ce n'est pas assez, je ne sais comment te remercier

Un grand merci à toi !

Rechercher des sujets similaires à "tri extraction colonne"