Somme avec condition
Résolu/Fermé
NLAH
Messages postés
125
Date d'inscription
lundi 9 septembre 2013
Statut
Membre
Dernière intervention
13 juin 2017
-
5 avril 2017 à 18:04
NLAH Messages postés 125 Date d'inscription lundi 9 septembre 2013 Statut Membre Dernière intervention 13 juin 2017 - 8 avril 2017 à 12:20
NLAH Messages postés 125 Date d'inscription lundi 9 septembre 2013 Statut Membre Dernière intervention 13 juin 2017 - 8 avril 2017 à 12:20
A voir également:
- Somme avec condition
- Somme si couleur - Guide
- Somme excel - Guide
- Excel cellule couleur si condition texte - Guide
- Recherchev somme plusieurs lignes ✓ - Forum Excel
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
3 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
5 avril 2017 à 20:50
5 avril 2017 à 20:50
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
7 avril 2017 à 12:11
7 avril 2017 à 12:11
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 ?!...
NLAH
Messages postés
125
Date d'inscription
lundi 9 septembre 2013
Statut
Membre
Dernière intervention
13 juin 2017
2
7 avril 2017 à 12:50
7 avril 2017 à 12:50
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
7 avril 2017 à 17:46
7 avril 2017 à 17:46
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
NLAH
Messages postés
125
Date d'inscription
lundi 9 septembre 2013
Statut
Membre
Dernière intervention
13 juin 2017
2
8 avril 2017 à 12:20
8 avril 2017 à 12:20
MERCI ça marche tres bien
5 avril 2017 à 22:57
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.
6 avril 2017 à 00:43
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é)...
6 avril 2017 à 16:04
6 avril 2017 à 20:34
J'attends un fichier que je puise ouvrir...
6 avril 2017 à 20:50
voila le lien de fichier, merci d'avoir m'aider:
https://www.cjoint.com/c/GDgsXjPiwPY