Dispatcher un peu spécial

  • Initiateur de la discussion Initiateur de la discussion izypok
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

I

izypok

Guest
Bonjour Forum,
Je suis plus que limiter en VBA et après plusieurs recherches sur différents fils, je ne m'en sors pas.
J'ai un fichier excel que j'alimente régulièrement, c'est un fichier avec plusieurs clients (environ un cinquantaine).
Mon soucis est que j'aimerai:
1.dispatcher ces données dans plusieurs onglets qui auraient le nom des clients (environ 50)
2.classer ces données par groupes articles
3.synthétiser une ligne entre chaque famille d'article (voir formules fichiers)
4.créer une ligne finale à la fin de chaque tableau de chaque onglet pour les valeurs finales qui m'intéresse. (voir fichier)

Merci d'avance de votre aide, moi je n'ai pas trouvé de solutions.

PS: je viens de déménager et serai peut-être un peu long à vous lire. (débit adsl très bas)Désolé d'avance
 

Pièces jointes

Re : Dispatcher un peu spécial

Bonsoir gosselien, izypok, le forum 🙂

Je crée les feuilles en m'appuyant sur la colonne F pour les nommer. (point 1)
Je trie les lignes en m'appuyant sur les articles figurant en colonne D. (point 2)
Après, j'ai la flemme pour continuer. (points 3 et 4) 😛
VB:
Sub dispatch()
Dim a, e, dico As Object
    Application.ScreenUpdating = False
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    With Sheets(1).Cells(1).CurrentRegion
        a = .Columns("f").Offset(1).Value
        For Each e In a
            If (e <> "") * (Not dico.exists(e)) Then
                If Not IsSheetExists(CStr(e)) Then
                    Sheets.Add(after:=Sheets(Sheets.Count)).Name = CStr(e)
                End If
                Sheets(CStr(e)).Cells.Clear
                .AutoFilter 6, e
                .Copy Sheets(CStr(e)).Cells(1)
                With Sheets(CStr(e))
                    .Activate
                    .Cells(1).CurrentRegion.Sort [D1], 1, , , , , , xlYes
                End With
                .AutoFilter
            End If
        Next
    End With
    Application.ScreenUpdating = True
End Sub
 
 
Function IsSheetExists(ByVal txt As String) As Boolean
    On Error Resume Next
    IsSheetExists = Len(Sheets(txt).Name)
    On Error GoTo 0
End Function
klin89
 
Re : Dispatcher un peu spécial

Bonjour Gosselien,
Merci de t'être penché sur mon problème et pour ce début de réponse
Vu que le tableau doit être alimenté en permanence, un code VBA est plus approprié (corrélations entre les différentes célules alimenté et mes innombrables tableaux = gros risques d'erreur)

Bonjour Klin89,
C'est exactement ce que je recherche pour les points que tu as traités (reste 3 et 4).
Je vais me penché sur la mise en forme identique de tous les onglets créés et les ordonner alphabétiquement.
Merci encore.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour