Somme avec condition
Résolu
NLAH
Messages postés
125
Date d'inscription
Statut
Membre
Dernière intervention
-
NLAH Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
NLAH Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voulais chercher une valeur dans la colonne A puis des que je trouve cette valeur je souhaiterai récupérer le numero de la ligne associée pour effectuer une somme par la suite. voila un exemple qui explique ce que je veux exactement:
ColonneA: ColonneB:
A 5
A 5
B 2
B 2
B 2
si l'utilisateur saisi dans lle combobox la valeur A:
je voudrais afficher dans un textbox: la somme : 5+ 5=10
et s'il choisit B la somme est: 2+2+2=8
j'ai commencé par ce code mais j'arrive pas à atteindre mon objectifs, merci pour votre aide:
https://www.cjoint.com/c/GDfqd5IfxqU
je voulais chercher une valeur dans la colonne A puis des que je trouve cette valeur je souhaiterai récupérer le numero de la ligne associée pour effectuer une somme par la suite. voila un exemple qui explique ce que je veux exactement:
ColonneA: ColonneB:
A 5
A 5
B 2
B 2
B 2
si l'utilisateur saisi dans lle combobox la valeur A:
je voudrais afficher dans un textbox: la somme : 5+ 5=10
et s'il choisit B la somme est: 2+2+2=8
j'ai commencé par ce code mais j'arrive pas à atteindre mon objectifs, merci pour votre aide:
https://www.cjoint.com/c/GDfqd5IfxqU
A voir également:
- Somme avec condition
- Excel cellule couleur si condition texte - Guide
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Excel condition ou - Guide
3 réponses
Bonsoir NLHA, bonsoir le forum,
Supprime tous les codes de ton UserForm1 (y'en a même un ancien mien ! Mort de rire) et remplace par celui-ci :
Supprime tous les codes de ton UserForm1 (y'en a même un ancien mien ! Mort de rire) et remplace par celui-ci :
Private O As Worksheet 'déclare la variable O (Onglet) Private TV As Variant 'déclare la varaible TV (Tableau des Valeurs) Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm Dim D As Object 'déclare la variable D (Dictionnaire) Dim I As Integer 'déclare la variable I (Incrément) Set O = Worksheets("Feuil2") 'définit l'onglet O TV = O.Range("A1").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 en colonne 1 Next I 'prochaine ligne de la boucle Me.ComboBox1.List = D.keys 'alimente la ComboBox1 avec la listes des éléments du dictionnaire D sans doublon End Sub Private Sub ComboBox1_Change() 'au changement dans la ComboBox1 Dim I As Integer 'déclare la variable I (Incrément) Me.TextBox1.Value = "" 'vide la TextBox1 For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde) 'si la donnée ligne I en colonne 1 de TV est égale à la valeur de la ComboBox1, définit la variable T 'somme d'elle-même avec la donnée ligne I colonne 2 de TV, convertie en entier If TV(I, 1) = Me.ComboBox1.Value Then T = T + CInt(TV(I, 2)) Next I 'prochaine ligne de la boucle Me.TextBox1.Value = T 'renvoie la variable T (la somme) dans la TextBox1 End Sub
Re,
Normalement oui ça fonctionne. Au pire si ça plante essaie avec :
Car l'index est un entier et pas du texte...
Mais je ne comprends pas pourquoi tu ne testes pas avant de poser la question ?!...
Normalement oui ça fonctionne. Au pire si ça plante essaie avec :
Set O = Worksheets(CByte(ComboBox1.Value))
Car l'index est un entier et pas du texte...
Mais je ne comprends pas pourquoi tu ne testes pas avant de poser la question ?!...
j'ai essayé ce que tu m'as dit mais ça marche pas ni avec Cbyte ni sans cbyte
j'ai testé avant de poser la question ;)
voila le lien:
https://www.cjoint.com/c/GDhkVID0OLm
merci
j'ai testé avant de poser la question ;)
voila le lien:
https://www.cjoint.com/c/GDhkVID0OLm
merci
Re,
En fait ça ne marche pas à l'initialisation de L'UserForm mais il fallait le placer dans la procédure Change de la ComboBox2. Même combat, supprime et remplace tout :
En fait ça ne marche pas à l'initialisation de L'UserForm mais il fallait le placer dans la procédure Change de la ComboBox2. Même combat, supprime et remplace tout :
Private O As Worksheet 'déclare la variable O (Onglet) Private TV As Variant 'déclare la varaible TV (Tableau des Valeurs) Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm Dim k As Integer For k = 1 To Sheets.Count ComboBox2.AddItem (k) Next k End Sub Private Sub ComboBox2_Change() Dim D As Object 'déclare la variable D (Dictionnaire) Dim I As Integer 'déclare la variable I (Incrément) Me.ComboBox1.Clear 'vide la ComboBox1 Me.TextBox1.Value = "" 'efface la TextBox1 Set O = Worksheets(CByte(ComboBox2.Value)) 'définit l'onglet O TV = O.Range("A1").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 en colonne 1 Next I 'prochaine ligne de la boucle Me.ComboBox1.List = D.keys 'alimente la ComboBox1 avec la listes des éléments du dictionnaire D sans doublon End Sub Private Sub ComboBox1_Change() 'au changement dans la ComboBox1 Dim I As Integer 'déclare la variable I (Incrément) Me.TextBox1.Value = "" 'vide la TextBox1 For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde) 'si la donnée ligne I en colonne 1 de TV est égale à la valeur de la ComboBox1, définit la variable T 'somme d'elle-même avec la donnée ligne I colonne 2 de TV, convertie en entier If TV(I, 1) = Me.ComboBox1.Value Then T = T + CInt(TV(I, 6)) Next I 'prochaine ligne de la boucle Me.TextBox1.Value = T 'renvoie la variable T (la somme) dans la TextBox1 End Sub
5 colonnes de types différents:
et je voudrais sommer la colonne E mais lorsque j'effectue quelques sur votre code, il se bloque problème d'incompatibilie de type
https://www.cjoint.com/c/GDfu4BSwbaL
Merci.
C'est couillon de ne pas donner le bon exemple ! Mais là il est trop tard et je vais me coucher. Je verrai ça demain (si je suis bien luné)...
J'attends un fichier que je puise ouvrir...
voila le lien de fichier, merci d'avoir m'aider:
https://www.cjoint.com/c/GDgsXjPiwPY