Code VBA ou astuce à l'aiide !!

  • Initiateur de la discussion Initiateur de la discussion lamghari
  • 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 !

L

lamghari

Guest
bonjour,
j'ai une énorme base de donnée, j'ai récupéré les données avec excel mais j'aimerai rajouter une cellule qui va me simplifier énormément le travail (voir image)
Capture d’écran 2016-06-02 à 20.58.23.jpg
en gros je veux un code qui me permettra de mettre automatiquement la somme des 12 mois dans la cellule conso_annuelle ( vu que j'ai 100 000 données ça va être pas possible de faire manuellement .. )
je mets le fichier excel en joint si quelqu'un pourra m'aider bien évidemment
merci d'avance !!
 
Re : Code VBA ou astuce à l'aiide !!

Bonsoir Lamghari, bonsoir le forum,

Toujours et encore ma vielle histoire du pneu crevé... L'autre jour je crève un pneu, je le prends en photo et apporte la photo à mon garagiste. Il n'a pas pu le réparer ce naze !...

Ne prends pas pour prétexte la taille de ton fichier. Nous n'avons besoin pour t'aider que d'un fichier exemple avec la même structure que ton fichier original et une poignée de données significatives...
 
Re : Code VBA ou astuce à l'aiide !!

Bonsoir le fil, bonsoir le forum,

Tu parles dans l'énoncé du post #1 de cellule conso_annuelle. J'avais déduis qu'il s'agissait d'une plage nommée mais je ne l'ai pas trouvée. J'ai donc renvoyé le résultat dans un tableau à partir de la cellule H1. Tu adapteras...

Le code :

Code:
Sub Macro3()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnsaire)
Dim I As Long 'déclare la variable I (Incrément)
Dim TP As Variant 'déclare la variable TP (Tableau Temporaire)
Dim TS() As Variant 'déclare la variable TS (Tableau des Sommes)

Set O = Sheets("file1.csv") 'définit l'onglet O
O.Range("H1:I" & O.Range("H" & Application.Rows.Count).End(xlUp).Row).ClearContents 'efface d'enventuelles anciennes sommes
TV = O.Range("J1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les données de la colonne 1 du tableau des valeurs TV
Next I 'prochaine ligne de la boucle
TP = D.keys 'récupère dans le tableau temporaire TP la liste des éléments du dictionnaire sans doublon
ReDim TS(1, UBound(TP)) 'redimensionne le tableau des sommes TS (deux lignes, autant de colonnes que TP a de lignes)
For J = 0 To UBound(TP) 'boucle 1 : sur tous les éléments du tableau temporaire TP
    TS(0, J) = "Somme " & TP(J) 'définit la valeur de la première ligne de TS(J)
    For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
        'si la données ligne I colonne 1 de TV est égale à l'élément TP(J), définit la valeur de la seconde ligne de TS
        '(en faisant la somme des valeurs en colonne 3 de TV)
        If TV(I, 1) = TP(J) Then TS(1, J) = TS(1, J) + TV(I, 3)
    Next I 'prochaine ligne de la boucle 2
Next J 'prochain élément de la boucle 1
O.Range("H1").Resize(UBound(TP) + 1, 2).Value = Application.Transpose(TS) 'renvoie dans H1 redimensionnée le tableau TS transposé
End Sub
 
Re : Code VBA ou astuce à l'aiide !!

Re,

Il eut été bon d'avoir aussi le message d'erreur !...
Le problème est peut-être dû à une référence manquante. Dans VBE (Visual Basic Editor), menu Outil / Références... si tu as une référence indiquant manquante, décoche la et réessaie...

Regarde les références que j'ai sur mon PC et compare...

Msg.jpg
 

Pièces jointes

  • Msg.jpg
    Msg.jpg
    129.5 KB · Affichages: 29
Re : Code VBA ou astuce à l'aiide !!

salut

Robert, ta version fonctionne chez moi avec mon 2010 pas maqué 😉 !

Si la plage récupérée se présente toujours ainsi Code, 12 mois, sommes, Code, 12 mois, sommes … ,
en passant par une formule (pas la même que celle de Modeste GeeDee😉) transformée en VBA
Code:
Private Sub CommandButton1_Click()
 [TF[Conso_An]].FormulaLocal = "=SOMME.SI(TC[PLS];[@CLIENT];TC[CONSO])"
 [TF[Conso_An]] = [TF[Conso_An]].Value
End Sub
où TF est le Tableau à remplir et TC le tableau récupéré.
 

Pièces jointes

- 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

Réponses
3
Affichages
409
D
Réponses
4
Affichages
1 K
H
Réponses
21
Affichages
2 K
H
P
Réponses
14
Affichages
1 K
PHILOU31
P
E
Réponses
5
Affichages
1 K
eric1989
E
Réponses
8
Affichages
1 K
A
Réponses
11
Affichages
1 K
A
M
Réponses
5
Affichages
864
MarinaF
M
Retour