rassembler les doublons

an@s

XLDnaute Occasionnel
Bonjour à tous,

dans l'exemple ci-joint un code dans la feuille RECAP qui permet en premier lieu d'importer les informations de chaque feuille en commençant par 210 et les mettre dans le tableau de la feuille RECAP.

le 2ème rôle de ce code consiste à mettre jour le tableau de la feuille Synthèse en se basant sur celui de la feuille RECAP...

le code fonctionne bien mais j'aimerai faire une petite modification en faisant ceci :

en cliquant sur la feuille Synthèse je veux que le code rassemble les lignes dont les cellules de la colonne C sont les mêmes en une seule ligne, et les valeurs des colonnes E jusqu'à M sera la somme des lignes rassemblées.
exemple (lignes 11 & 12, 13 & 15, 10 & 17, 18-19-20-21-22-23)

NB: je n'ai pas de problème de ne plus avoir les formules dans le tableau de la feuilel synthèse et d'avoir juste des valeurs

Merci d'avance pour votre assistance
 

Pièces jointes

  • client.xlsm
    336.3 KB · Affichages: 54
Dernière édition:

an@s

XLDnaute Occasionnel
Bonsoir Job, le forum

j'ai compris pour les secondes, cela n'est pas grave
par contre j'ai constaté un petit souci concernant la colonne M que je saisi manuellement....
si je mets par exemple dans M10 une valeur de 36 e je vais sur une autre feuille et je reviens sur synthèse je remarque que cette valeur change de position et se place sur M12...
il faut fixer toutes les valeurs que je saisie dans la colonne M.... chose qui faisait déjà le code MAJ...mais avec votre modification ce point ne marche pas

Cordialement
An@s
 

job75

XLDnaute Barbatruc
Bonjour an@s, le forum,
par contre j'ai constaté un petit souci concernant la colonne M que je saisi manuellement....
Eh oui si les colonnes M O P sont renseignées manuellement cela nécessite une petite gymnastique.

Alors maintenant les Worksheet_Activate des feuilles "SYNTHESE" et "RECAP" appellent cette macro :
Code:
Sub MAJ_SYNTHESE()
Dim a(), b(), i&, j%, k As Variant
Application.ScreenUpdating = False
'---mémorisation des valeurs en colonnes M (N) O P---
With Sheets("SYNTHESE").[C10].CurrentRegion
  ReDim a(1 To .Rows.Count): ReDim b(1 To .Rows.Count, 1 To 4)
  For i = 1 To .Rows.Count
    If Application.CountA(.Cells(i, 11).Resize(, 4)) Then _
      a(i) = .Cells(i, 1): b(i, 1) = .Cells(i, 11): b(i, 3) = .Cells(i, 13): b(i, 4) = .Cells(i, 14)
  Next
  .Cells(1, 11).Resize(.Rows.Count, 4).ClearContents 'effacement des colonnes M N O P
End With
'---exécution de la macro Maj---
Call Maj
'---regroupement des doublons---
With Sheets("SYNTHESE").[C10].CurrentRegion.Resize(, 9) 'colonnes C à K (formules)
  .Value = .Value 'supprime les formules
  .Sort .Cells(1), xlAscending, Header:=xlNo 'tri sur la 1ère colonne
  For i = .Rows.Count To 2 Step -1
    If .Cells(i, 1) = .Cells(i - 1, 1) Then
      For j = 3 To 9 'colonnes E à K
        If IsNumeric(CStr(.Cells(i, j))) Then .Cells(i - 1, j) = .Cells(i, j) + Val(Replace(.Cells(i - 1, j), ",", "."))
      Next
      .Rows(i).EntireRow.Delete 'suppression de la ligne doublon
    End If
  Next
  '---restitution des valeurs mémorisées en colonnes M O P---
  For i = 1 To .Rows.Count
    k = Application.Match(.Cells(i, 1), a, 0)
    If IsNumeric(k) Then .Cells(i, 11) = b(k, 1): .Cells(i, 13) = b(k, 3): .Cells(i, 14) = b(k, 4)
  Next
End With
End Sub
Remarque : il ne peut pas y avoir de doublon de client sur les colonnes M O P puisqu'elles sont renseignées manuellement après activation de la feuille "SYNTHESE".

La macro Maj est Private pour ne pas être lancée manuellement ou affectée à un bouton :
Code:
Private Sub Maj() 'Private pour ne pas être lancée manuellement ou affectée à un bouton
Bien sûr on pourrait regrouper ces 2 macros dans une seule mais c'est plus compréhensible ainsi.

Fichier (2).

A+
 

Pièces jointes

  • client(2).xlsm
    341 KB · Affichages: 30

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 525
dernier inscrit
gbaipc