Boucle Comparaison cellule
Bonjour,
J'ai un fichier contenant 2 feuilles
Feuille C: récupérer en fonction du libellé (colonne B ) la somme dépensé dans la feuille "Dépenses". Les libellés se trouvent en G et les montants en J. Je veux coller la somme Col E feuille "C".
Je dois récupérer les montants ayant le même libellé pour le coller dans une autre feuille.
Le nombre de ligne contenu dans "Dépenses" est variable.
Je débute en VBA est je bloque pour le coup....
Je ne sais pas comment exprimer ce que je souhaite faire, c'est-à-dire que si c'est égal il faut que je récupère tout les montants du libellé concerné et que je le colle dans "C" à côté du même libellé.
Voici le début de ma macro:
Sub formdepfourni()
Dim Der_ligne As Integer,
Dim Col As Integer
Dim DepF As Variant, Somme As Integer
'faire ctrl fleche jusqu'à la dernière colonne
Selection.End(xlToRight).Select
Der_ligne = ActiveCell.Row
DepF = Worksheets("C").Range("B3:B38")
Sheets("Dépenses").Activate
For li = 2 To Der_ligne
If DepP = Worksheets("Dépenses").Range(Cells(3, 7), Cells(Der_ligne, 7)) Then
End If
Next li
End Sub
Bonsoir SarahLeyla, bonsoir le forum,
Les photos c'est bien ! Mais le fichier c'est beaucoup mieux ! Il faut que tu comprennes que pour te proposer un code valable il faut qu'on puisse tester. PhotoShop ne sait toujours pas faire de l'Excel...
Bonsoir SarahLeyla, bonsoir le forum,
Comme mon PhotoShop est spécial, je te propose le code ci-dessous. Attenfion ! Dans l'onglet C il faut que les Libellés soient listés dans le même ordre que dans l'onglet Dépenses pour que ça fonctionne...
Sub Macro1()
Dim OC As Worksheet 'délare la variable OC (onglet C)
Dim OD As Worksheet 'délare la variable OD (onglet Dépenses)
Dim TV As Variant 'délare la variable TV (Tableau des Valeurs)
Dim NL As Integer 'délare la variable NL (Nombre de Lignes)
Dim D As Object 'délare la variable D (Dictionnaire)
Dim I As Integer 'délare la variable I (Incrément)
Dim J As Integer 'délare la variable J (incrément)
Dim TMP As Variant 'délare la variable TMP (Tablau TeMPoraire)
Dim TS() As Variant 'délare la variable TS (Tableau des Sommes)
Set OC = Worksheets("C") 'définit l'onglet OC
Set OD = Worksheets("Dépenses") 'définit l'onglet OD
TV = OD.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To NL 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
D(TV(I, 7)) = "" 'alimente de dictionnaire D avec la donnée en colonne 7 (le libellé)
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
ReDim TS(UBound(TMP)) 'redimensionne le tableau des somme TS (autant de ligne que TMP)
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments du tableau temporaire TMP
For I = 2 To NL 'boucle 2 : sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
'si le libellé en colonne 7 de TV, correpond à l'élément TMP(J), définit la somme TS(J)
If TV(I, 7) = TMP(J) Then TS(J) = TS(J) + TV(I, 10)
Next I 'prochaine ligne de la boucle 2
Next J 'prochain élément de la boucle 1
'renvoie dans E3 redimensionnée le tableau TS transposé
OC.Range("E3").Resize(UBound(TMP) + 1, 1).Value = Application.Transpose(TS)
End Sub