XL 2010 VBA : Boucle verticale dans boucle horizontale

DESTAB83

XLDnaute Nouveau
Bonjour les amis,
je cherche depuis un moment, mais je n'arrive à rien.
Je remercie par avance la personne qui pourra me donner le petit coup de pouce qui me manque !

Voilà :
Je dois créer un tableau de bord de suivi de budget.
Ce budget global est réparti entre plusieurs postes d'achat (fournitures de bureau, gaz, etc) et plusieurs porteurs (nommés ACN, RIT, RE) auxquels on fixe un plafond de dépense.
Dans l'exemple joint, ces données se trouvent dans le tableau figurant dans l'onglet "CARTE ACHAT 2020".
Les postes d'achat sont disposés en colonne, les porteurs en entête de colonnes, au centre les fameux plafonds de dépense à ne pas dépasser.
NB : je ne peux absolument pas modifier la structure de ce tableau, lequel sert de ressource à d'autres.

J'arrive bien à rapatrier dans mon tableau de bord les données à l'intersection lignes/colonnes à l'aide de ma liste déroulante, mais la macro ne me ramène que la première occurrence de porteurs.
Or, lorsque le même porteur apparait plusieurs fois avec des montants différents (par exemple "ACN") il faudrait que je puisse faire la somme de tous ces montants par postes dans mon tableau de bord, dans la colonne "Plafond"

Merci encore de votre aide. Je patauge pitoyablement, et pourtant je pressens que ce n'est pas grand chose à faire.

Amitiés.
 

Pièces jointes

  • Exemple.xlsm
    254.5 KB · Affichages: 18

DESTAB83

XLDnaute Nouveau
Merci infiniment CHALET53 !
C'est exactement ça (et pourtant je me rends compte que mes explications n'étaient pas super claires!)
Il y a vraiment des esprits éclairés sur ce forum, c'est génial!
Il me reste à bien piger ta macro.
Merci encore, et bonne journée à toi !
 

CHALET53

XLDnaute Barbatruc
lcolumn = .Cells(6, Columns.Count).End(xlToLeft).Column
Dernière colonne de la ligne 6 (permet de délimiter la plage de recherche)

lettre = Split(Columns(lcolumn).Address(ColumnAbsolute:=False), ":")(1)
Recherche de la lettre correspondant à la colonne (lcolumn)

Set plage = .Range("F6:" & lettre & 6)
Définition de la plage de recherche

With plage
Set jour = .Find(formations.Value, , lookat:=xlWhole)
Recherche de la valeur exacte dans la plage

Les variables a, b et c peuvent être supprimées (je les avais utilisées pour contrôle)

La variable cumul est par contre importante
 

DESTAB83

XLDnaute Nouveau
MERCIIII !
Oui, j'ai compris, et te remercie pour ce complément d'explications que tu as pris le temps de m'écrire, c'est vraiment très sympa.
C'est maintenant évident : je n'y serais pas parvenu tout seul, l'utilisation de "split" (entre autres), m'était complètement inconnue.
Bref, il me reste du chemin à faire, mais grâce à des sages comme toi, ce chemin me parait moins innaccessible ! :)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16