Trieuse

Bonjour à toutes et à tous,

j'ai un petit soucis, Il y a quelques temps une personne m'avais fait un super fichier avec macro, mais je ne sais pour quel raison il y a des bugs.

Pour résumer je joint un fichier sur le quel il faut faire un trie par la colonne E, puis chaque client de la colonne E doit se retrouver dans un onglet. jusque la tout va bien. mon problème est que les poids en colonne H sont complètement obsolète. et pour finir en colonne I -j-et K il se peut qu'il y ai des montant en euro comme pour le client "starlab" ex "81 €" mais déjà cela n'ai pas remis et quand ça l'est c'est en numérique hors j'en ai besoin en € .

En espérant avoir été assez clair si ce n'est pas le cas merci de revenir vers moi.

Un grand merci à celui qui m'aidera je suis en facturation ce jour et en galère.

Facturation traitement est le fichier macro qui va exploiter mes données

Facturation dentaires et le fichier a trier

Fct Dentaire est le fichier résultat qui a bugué

Bonsoir,

il n'y a aucun fichier joint, seulement une feuille vierge et un bouton de macro qui ouvre mon répertoire personnel

Poste ton fichier ouvert et on verra pour le tri.

Amicalement

Pierrot

Mince désolé javais mis deux autres fichiers mais que semble ne pas avoir été chargé

Je bais tenter de les charger à noueau.


je n'arrive pas à télécharger le fichier il dit dépasser 1 mo pourtant je n'ai laissé que 5 lignes à l’intérieur au lieu de 800 il est passé de 2.32 a 2.31 étrange non ?

Bonjour,

un fichier qui a eu à un moment une cellule occupé à la ligne 50.000 par exemple gardera TOUJOURS cette adresse et donc augmentera le poids du fichier.

Regarde s'il n'y a pas d'objets ou de graphique inutile

P.

Voici la macro

Si ça peut aider

Sub TriClients()

'

' Tri des clients sur différents onglets

'

Dim dataSheet As String

Dim ws As Worksheet

Dim leClient As String

Dim tbClients()

Dim nbClients As Integer

Dim nbLignes As Integer

Dim intChoice As Integer

Dim strPath As String

Dim MainBook As String

'

MainBook = ThisWorkbook.Name

' Ouvrir dialogue pour sélection du fichier

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False

Call Application.FileDialog(msoFileDialogOpen).Filters.Clear

Call Application.FileDialog(msoFileDialogOpen).Filters.Add("Excel file", "*.xlsx,*.xls")

intChoice = Application.FileDialog(msoFileDialogOpen).Show

'determine chix du fichier

If intChoice <> 0 Then

'si un fichier sélectionné > ouvrir

strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)

Workbooks.Open (strPath)

End If

' Récupération nom feuille de données

dataSheet = ActiveSheet.Name

' Tri des données sur la colonne CLIENT

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("E2:E" & ActiveSheet.UsedRange.Rows.Count) _

, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

With Worksheets(dataSheet).Sort

.SetRange Range("A1:G" & ActiveSheet.UsedRange.Rows.Count)

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

' Boucle sur la colonne CLIENT pour mémoriser leurs noms

For i = 2 To ActiveSheet.UsedRange.Rows.Count

' AND condition pour éviter le CLIENT de la ligne des totaux

If Range("E" & i).Value <> Range("E" & i - 1).Value And Not IsEmpty(Range("E" & i)) Then

nbClients = nbClients + 1

ReDim Preserve tbClients(nbClients)

tbClients(nbClients) = Range("E" & i).Value

End If

Next i

' Contrôle si Autofiltre est actif si pas ACTIVATION

Range("A2").Select

If Not ActiveSheet.AutoFilterMode Then

ActiveSheet.Range("A1").AutoFilter

End If

' Boucle sur le tableau noms clients pour filtrer - copier vers nouvelle feuille - insérer totaux

For i = 1 To nbClients

Sheets(dataSheet).Select

Selection.AutoFilter Field:=5, Criteria1:=tbClients(i)

Range("A1:L1").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

With ActiveWorkbook

Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))

If InStr(tbClients(i), "/") > 0 Then

ws.Name = Replace(tbClients(i), "/", " ")

Else

ws.Name = tbClients(i)

End If

ActiveSheet.Paste

Columns("A:L").EntireColumn.AutoFit

End With

nbLignes = ActiveSheet.UsedRange.Rows.Count

Range("G" & nbLignes + 1).FormulaR1C1 = "=SUM(R[-" & nbLignes - 1 & "]C:R[-1]C)"

Range("H" & nbLignes + 1).FormulaR1C1 = "=SUM(R[-" & nbLignes - 1 & "]C:R[-1]C)"

Range("G" & nbLignes + 1 & ":G" & nbLignes + 1).HorizontalAlignment = xlCenter

Range("A2").Select

Next i

Workbooks(MainBook).Close

End Sub

Du vba sans fichier, tu penses que c'est facile..

Perso, je renonce, désolé

P.

Rechercher des sujets similaires à "trieuse"