Fusion de cellules sur 1 colonne et cumul aut

Résolu
tomti13frec -  
 tomti13frec -
Bonjour,
j'ai un fichier client qui indique plusieurs lignes par clients en fonction du nombre d'achat.
Y a t il une formule pour que le nom du client soit sur une ligne et que les différents achats soient cumuler sur la meme ligne?
Au final je veux CA/CLIENT/AN
Merci

10 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Et sur quel logiciel et version ?
    0
  2. tomti13frec
     
    Il est vrai que c'est mieux de préciser....
    EXCEL 07
    merci
    0
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Comme ça c'est difficile de comprendre ce que tu veux.
    Mettre un classeur exemple sur CiJoint.fr avec une feuille qui contient des exemples de ce qui existe et sur une autre feuille le résultat souhaiter.
    A+
    0
  4. tomti13frec
     
    SLT,
    voici le fichier client tel qui sort à l'extraction. En fait nos clients,heureusement, font des achats plusieurs fois au cours de l'année et notre programme sort les informations regroupées en mois ( d'où la colonne E= chaque chiffre etant le mois de l'année). Or moi je veux le cumul du ca en fonction des produits et du total, sur l'année.
    J'ai mis sur le fichier 3 clients, j'ai donc pu mettre sur la feuille 2 le résultat escompté en faisant une simple somme mais j'ai 9000 clients!
    merci
    http://www.cijoint.fr/cjlink.php?file=cj201012/cijImYS0Hl.xls
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Dernière question,
    Tu fais un classeur par année ou c'est toujours le même et il faut trier les dates ?
    0
  7. tomti13frec
     
    SLT,
    je peux avoir à faire les 2 mais dans le cas présent c'est sur une seule année
    0
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Sans tenir compte de la date...
    'Adapter Feuil2 et Feuil3  
    Sub Totalisation_Annuelle()  
    Dim LigS As Long, LigC As Long, NbLigS As Long  
    Dim Tot() As Double, Total As Double  
    Dim Client() As String, LigClient() As Long, NumClient As Long  
    Dim i As Long  
        With Sheets("Feuil1") ' adapter le nom de la feuille  
            NbLigS = .Range("A65536").End(xlUp).Row  
            LigC = 2  
            'Chercher le nombre et le nom de tout les clients  
            ReDim Client(0): Total = 0: ReDim LigClient(0) '1er client  
            Client(0) = .Range("B2"): LigClient(0) = 2 'Commence à la ligne 2  
              
            For LigS = 3 To NbLigS  
                For i = 0 To UBound(Client)  
                    If .Cells(LigS, 2) = Client(i) Then Exit For  
                Next i  
                If i = UBound(Client) + 1 Then 'C'est un autre client  
                    ReDim Preserve Client(UBound(Client) + 1)  
                    ReDim Preserve LigClient(UBound(LigClient) + 1)  
                    Client(UBound(Client)) = .Cells(LigS, 2)  
                    LigClient(UBound(LigClient)) = LigS  
                End If  
            Next LigS  
            'Ici on a le nom des clients dans Client() et la 1ère ligne dans NumClient()  
            For NumClient = 0 To UBound(Client)  
                ReDim Tot(1 To 9): Total = 0  
                For LigS = LigClient(NumClient) To NbLigS  
                    If .Cells(LigS, 2) = Client(NumClient) Then  
                        For i = 1 To 9  
                            Total = Total + .Cells(LigS, i + 7)  
                            Tot(i) = Tot(i) + .Cells(LigS, i + 7)  
                        Next i  
                    End If  
                Next LigS  
                'Toutes les données du client ont étés totalisées  
                'Inscrire les données client.  
                For i = 1 To 6  
                    Sheets("Feuil3").Cells(LigC, i) = .Cells(LigClient(NumClient), i)  
                Next i  
                Sheets("Feuil3").Cells(LigC, 5) = "Annuel"  
                'inscrire les totaux  
                Sheets("Feuil3").Cells(LigC, i) = Total  
                For i = 1 To 9  
                    Sheets("Feuil3").Cells(LigC, i + 7) = Tot(i)  
                Next i  
                LigC = LigC + 1 ' passe au client suivant  
            Next NumClient  
        End With  
    End Sub

    Colle ce code dans un module public et lancer par F5
    Tu dis
    A+
    PS: Ton classeur exemple contient des erreurs de calcul ? tu à fais ça en manuel ?
    J'ai contrôller et en principe c'est juste.
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  9. tomti13frec
     
    pfiou les macros....
    moi qui maîtrise à peine les fonctions SOMME et MOYENNE, tu vois le niveau!
    J'essaye de mettre ca en place et te tiens au courant mais merci bcp!
    A +
    0
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Les clients sont tous trier comme sur ton exemple ou bien il sont "mélanger", ça pourrait simplifier la macro s'il était trier (et réduire le temps)

    Pour mettre la macro en place c'est pas compliquer..
    Tu tape Alt+F11
    Dans l'éditeur de macro >> Insertion >> Module
    Dans la fenêtre qui apparaît tu colle tout le code ci-dessus.
    Tu adapte Feuil1 au nom de la feuille ou sont tout tes clients.
    Tu adapte Feuil3 au nom de la feuille où tu veux le résultat.
    Ensuite tu fait un Backup... c'est plus prudent.
    Tu met le curseur au milieu de la macro et tu tape F5... et tu attend.
    Tu dis.
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  11. tomti13frec
     
    TU SAIS QUE T'ES UN GENIE???!!!
    Merci beaucoup c'est au top
    A +
    0