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

neal

XLDnaute Junior
Bonjour, voici mon problème :

Dans la feuille "Extraction" j'ai :

Colonne B : code vendeur (de 1 à 5)
Colonne G : montant des ventes

Il y a X lignes

Dans la feuille "Vendeurs" j'ai :
Colonne A : code vendeur (de 1 à 5)
Colonne B : nom et prénom du vendeur
Colonne C : total des ventes par vendeurs

OBJECTIF :
En cliquant sur le bouton "Montant des ventes pour un vendeur", je cherche à afficher une combobox avec liste déroulante reprenant les noms et prénoms des vendeurs.
Ses noms et prénoms renvoient au code vendeur automatiquement à partir de la feuille "Vendeurs".
Dans la feuille "Vendeurs", dans la cellule en face du bon vendeur (celui choisi dans la combobox), on obtient la somme des ventes du vendeur.
Sachant que je cherche à faire une macro qui fonctionne quelque soit le nombre de vendeur et quelque soit le nombre de ligne dans la feuille "Extraction".

Je suis bloqué ...
Je mets en pièce jointe le fichier avec la combobox déjà créée.
Merci d'avance.
 

Pièces jointes

Re : Macro somme.si

Bonjour,

Il y a certainement 36 façons d'arriver à ton résultat, mais j'ai l'impression que tu as choisi la plus compliquée 🙂
Zones, nommées, listes déroulantes, un petit Somme.si(), vois dans le fichier joint plusieurs pistes qui, sauf addiction aux Userforms, peuvent peut-être t'aider en simplifiant le problème.

Bonne journée,

mth
 

Pièces jointes

Re : Macro somme.si

Bonjour bclement, et bienvenue sur XLD,

Voici ton fichier avec les macros modifiées et complétées. Tu remarqueras qu'il est inutile d'écrire ou de copier certaines cellules sur la feuille Vendeurs, la macro se charge de calculer et d'afficher les totaux directement dans la colonne adéquate.

Espérant avoir répondu.

Cordialement.

PS : bonjour mth
 

Pièces jointes

Re : Macro somme.si

Merci beaucoup pour la réponse rapide (comme d'habitude sur ce forum, c'est impressionnant! -- j'avais un autre compte avant)
Je vais me mettre dans la macro histoire de comprendre la logique et de voir pourquoi je n'ai pas réussi à la faire.
 
Dernière édition:
Re : Macro somme.si

@Papou-net :

Pour poser le contexte : je n'ai jamais eu de formation VBA, je m'auto-forme.

Pourrais tu m'expliquer la macro, je ne la comprends pas ...
Notamment :

i = ComboBox1.ListIndex + 1

--> Pour moi dans la combobox il y a du texte. Alors je ne comprends pas comment il peut "comprendre" le +1.

With Sheets("Extraction")
For Lg = 2 To .Range("B:B").SpecialCells(xlCellTypeConstants).Rows.Count
If .Cells(Lg, 2) = i Then
Sheets("Vendeurs").Range("C" & i + 1) = Sheets("Vendeurs").Range("C" & i + 1) + .Cells(Lg, 7)
End If
Next
End With


--> Je ne connais pas la "fonction" .SpecialCells(xlCellTypeConstants).Rows.Count, donc je ne vois pas comment est ce qu'il peut faire une somme avec condition ... En fait je ne comprends pas le code en entier :/
 
Dernière édition:
Re : Macro somme.si

Bonsoir bclement,

Code:
i = ComboBox1.ListIndex + 1

La liste d'index des combobox commence à 0, donc on ajoute 1 à l'index pour correspondre à la position réelle dans la liste. Là on agit sur l'index (ListIndex) et non sur le contenu texte de la liste.

ListIndex Code Nom
0 1 Jean-Charles Maigret
1 2 Pierre Rolling
2 3 Felix Marchioni
3 4 Toussaint Leandri
4 5 Ange Pieri

Ex : ComboBox1.ListIndex(2) = Felix Marchioni
ComboBox1.ListIndex(2) + 1 = Toussaint Leandri

Code:
With Sheets("Extraction")
For Lg = 2 To .Range("B:B").SpecialCells(xlCellTypeConstants).Rows.Count
If .Cells(Lg, 2) = i Then
Sheets("Vendeurs").Range("C" & i + 1) = Sheets("Vendeurs").Range("C" & i + 1) + .Cells(Lg, 7)
End If
Next
End With

La boucle ci-dessus analyse chaque cellule dont le contenu n'est pas vide dans la colonne B:B
La fonction
Code:
SpecialCells(xlCellTypeConstants).Rows.Count
compte (Count) le nombre de lignes (Rows) dont la cellule colonne B contient des données (SpecialCells(xlCellTypeConstants). Attention, il s'agit là de données et non pas de formules.
Si la cellule contient le code correspondant au choix mentionné sur UserForm1, il incrémente la cellule adjacente (colonne C) du montant correspondant au code vendeur.
De ce fait, pas besoin de formules dans la feuille de calcul.
La macro Sub exercice2() procède de la même façon, avec une boucle supplémentaire pour balayer chaque code de vendeur.

Espérant avoir été clair dans mes explications.

Cordialement.
 
- 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

Discussions similaires

Réponses
4
Affichages
313
Réponses
5
Affichages
313
Retour