[vba] probleme addition
Fermé
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
-
13 mars 2008 à 16:27
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 - 14 mars 2008 à 14:55
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 - 14 mars 2008 à 14:55
A voir également:
- [vba] probleme addition
- Formule excel addition - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
19 réponses
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 16:45
13 mars 2008 à 16:45
Bonjour,
Juste en passant: initialiser la variable total =0
J'admets que le tableau (n) et une variable éclarée
Dim tableau(4) as Integer ? conrient les valeurs 2,3,4,5,6
et votre bloucle devient
for i= 0 to 4 ' le 0 base de départ
total=total+tableau(i)
next
Juste en passant: initialiser la variable total =0
J'admets que le tableau (n) et une variable éclarée
Dim tableau(4) as Integer ? conrient les valeurs 2,3,4,5,6
et votre bloucle devient
for i= 0 to 4 ' le 0 base de départ
total=total+tableau(i)
next
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 17:11
13 mars 2008 à 17:11
Bonjour antic80,,
Oui d'accord, mais pourquoi total1.....total2.... je ne comprend pas !!
Oui d'accord, mais pourquoi total1.....total2.... je ne comprend pas !!
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 17:12
13 mars 2008 à 17:12
en fait j'ai 12 colonnes et je dois faire le total de chaque colonne pour le stocker dans une autre feuille
donc total1 = total colonne 1 etc...
donc total1 = total colonne 1 etc...
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 17:15
13 mars 2008 à 17:15
Bonjour antic80,
est-ce juste: le tableau est donc tableau(5,10) !
est-ce juste: le tableau est donc tableau(5,10) !
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 17:18
13 mars 2008 à 17:18
oui voila le tableau qui stocke les valeurs en vue de les additionner est a double dimension
tableau (1 to 12 ,1 to 16)
tableau (1 to 12 ,1 to 16)
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 17:30
13 mars 2008 à 17:30
Bonjour antic80,
Ok j'ai compris et le total de chaque colonnes est inéré sur une feuille ?
Un moment je reviens .....
Ok j'ai compris et le total de chaque colonnes est inéré sur une feuille ?
Un moment je reviens .....
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 17:31
13 mars 2008 à 17:31
oui c ca
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 17:45
13 mars 2008 à 17:45
Bonjour antic80,
Je vous propose se qui suit:
Sub matrice()
Dim tableau(12, 16) As Integer
total = 0 ' -- réinitialiser la variable
For Co = 0 To 16 ' boucle sur colonne
For Li = 0 To 12 ' boucle sur ligne
total = total + tableau(Li, Co)
Next
InputBox (total) ' --- écrire dans la feuille
total = 0 ' -- réinitialiser la variable
Next
End Sub
J'espère que c'est se que vous cherchez !
Je vous propose se qui suit:
Sub matrice()
Dim tableau(12, 16) As Integer
total = 0 ' -- réinitialiser la variable
For Co = 0 To 16 ' boucle sur colonne
For Li = 0 To 12 ' boucle sur ligne
total = total + tableau(Li, Co)
Next
InputBox (total) ' --- écrire dans la feuille
total = 0 ' -- réinitialiser la variable
Next
End Sub
J'espère que c'est se que vous cherchez !
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 17:46
13 mars 2008 à 17:46
ok je vais voir et vous tiens au courant
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 17:51
13 mars 2008 à 17:51
le soucis est que total ne prend qu'une valeur
pour recopier les 12 totaux ca va poser probleme
pour recopier les 12 totaux ca va poser probleme
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 18:14
13 mars 2008 à 18:14
Bonjour antic80,
Vous avez bien dit ceci : le total de chaque colonne pour le stocker dans une autre feuille
Donc dès que le total d'une colonne est réalisé je vais inscrire le résultat sur la feuille adéquate et je continue ma boucle.
C'est ici qu'il daut mettre l'instruction .... InputBox (total) ' --- écrire dans la feuille
Ou alors ou est le problème...!
Vous avez bien dit ceci : le total de chaque colonne pour le stocker dans une autre feuille
Donc dès que le total d'une colonne est réalisé je vais inscrire le résultat sur la feuille adéquate et je continue ma boucle.
C'est ici qu'il daut mettre l'instruction .... InputBox (total) ' --- écrire dans la feuille
Ou alors ou est le problème...!
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 18:35
13 mars 2008 à 18:35
ok je n'avais pas percuter
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 18:52
13 mars 2008 à 18:52
Bonjour antic80,
Merci.
A titre d'information cette instruction permet d'écrire dans un autre classeur (Il doit être ouvert biensur)
Workbooks("Classeur1.xls").Worksheets("Feuil2").Cells(1, 3) = total
à mettre à la place de ----- InputBox (total) ' --- écrire dans la feuille
A une prochaine.
Merci.
A titre d'information cette instruction permet d'écrire dans un autre classeur (Il doit être ouvert biensur)
Workbooks("Classeur1.xls").Worksheets("Feuil2").Cells(1, 3) = total
à mettre à la place de ----- InputBox (total) ' --- écrire dans la feuille
A une prochaine.
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 19:17
13 mars 2008 à 19:17
voici mon code dit moi ce que tu en penses
Sheets("par secteur").Select
lastline = Range("p65365").End(xlUp).Row
For i = 1 To lastline
If Cells(i, 2).Text = annéedébut And Cells(i, 1).Text = "Décembre" And Cells(i, 4) = secteur Then
Cells(i, 1).Select
j = j + 1
For k = 1 To 15
Décembre(j, k) = ActiveCell.Offset(0, k).Value
Next
End If
Next i
For z = 4 To 12
For p = 1 To j
total = total + Décembre(p, z)
MsgBox total
Next p
Sheets("test").Select
Range("a65365").End(xlUp).Select
ActiveCell.Value = "Décembre"
ActiveCell.Offset(0, 1) = annéedébut
ActiveCell.Offset(0, 2) = secteur
ActiveCell.Offset(0, z - 1) = total
Next z
Sheets("par secteur").Select
lastline = Range("p65365").End(xlUp).Row
For i = 1 To lastline
If Cells(i, 2).Text = annéedébut And Cells(i, 1).Text = "Décembre" And Cells(i, 4) = secteur Then
Cells(i, 1).Select
j = j + 1
For k = 1 To 15
Décembre(j, k) = ActiveCell.Offset(0, k).Value
Next
End If
Next i
For z = 4 To 12
For p = 1 To j
total = total + Décembre(p, z)
MsgBox total
Next p
Sheets("test").Select
Range("a65365").End(xlUp).Select
ActiveCell.Value = "Décembre"
ActiveCell.Offset(0, 1) = annéedébut
ActiveCell.Offset(0, 2) = secteur
ActiveCell.Offset(0, z - 1) = total
Next z
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 20:13
13 mars 2008 à 20:13
Bonjour antic80,
Sans connaitre l'application elle même c'est pas facile, par contre la partie qui est semblable à notre échange de courriel me semble parfaite.
Je constate que l'autre feuille est dans le même classeur.
J'espère que tout va marché super bien.
Bonne soirée
Sans connaitre l'application elle même c'est pas facile, par contre la partie qui est semblable à notre échange de courriel me semble parfaite.
Je constate que l'autre feuille est dans le même classeur.
J'espère que tout va marché super bien.
Bonne soirée
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 20:15
13 mars 2008 à 20:15
ce qu'il y a au dessus ne marche pas
la macro ne m'additionne pas les valeurs
la macro ne m'additionne pas les valeurs
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 20:33
13 mars 2008 à 20:33
Bonsoir antic80,
Je veux bien chercher mais merci de me préciser quelle partie au dessus ....
Ou mieux le classeur sur http://www.cijoint.fr/ ou https://www.cjoint.com/ car s'est un peu compliqué à immaginer les données.
Je veux bien chercher mais merci de me préciser quelle partie au dessus ....
Ou mieux le classeur sur http://www.cijoint.fr/ ou https://www.cjoint.com/ car s'est un peu compliqué à immaginer les données.
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 20:36
13 mars 2008 à 20:36
le code en lui meme ne marche pas
par contre désolé mais les données sont confidentiels impossible de les envoyer
par contre désolé mais les données sont confidentiels impossible de les envoyer
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 20:49
13 mars 2008 à 20:49
Bonsoir antic80,
Ok, même par là pingou2ccm@bluewin.ch c'est confidentiel .
Ok, même par là pingou2ccm@bluewin.ch c'est confidentiel .
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 20:56
13 mars 2008 à 20:56
en fait le tableau ce présente comme suit
Décembre 2007 127150 secteur 1 0 0 1 1 0 0
Décembre 2007 127160 secteur 1 0 0 0 0 3 0
Décembre 2007 127170 secteur 1 1 0 0 1 3 0
Décembre 2007 127180 secteur 1 0 1 0 0 1 0
Décembre 2007 127190 secteur 1 0 1 0 3 0 0
Décembre 2007 127210 secteur 2 0 1 0 0 3 0
Décembre 2007 127220 secteur 2 0 1 1 4 0 1
Décembre 2007 127230 secteur 2 0 0 0 0 0 0
Décembre 2007 127240 secteur 2 0 0 0 0 0 0
Décembre 2007 127250 secteur 2 0 0 1 0 2 0
j'ai la meme chose pour tout les mois de l'année et pour 2006, 2007 etc.....
je choisis l'année 2006 et secteur 1
le but est d'obtenir le total de chaque colonne pour les lignes qui correspondent aux critères
puis de copier vers une autre feuille du classeur pour obtenir ceci
Décembre 2007 secteur 1 total colonne 1, total colonne 2, total colonne 3 etc....
Décembre 2007 127150 secteur 1 0 0 1 1 0 0
Décembre 2007 127160 secteur 1 0 0 0 0 3 0
Décembre 2007 127170 secteur 1 1 0 0 1 3 0
Décembre 2007 127180 secteur 1 0 1 0 0 1 0
Décembre 2007 127190 secteur 1 0 1 0 3 0 0
Décembre 2007 127210 secteur 2 0 1 0 0 3 0
Décembre 2007 127220 secteur 2 0 1 1 4 0 1
Décembre 2007 127230 secteur 2 0 0 0 0 0 0
Décembre 2007 127240 secteur 2 0 0 0 0 0 0
Décembre 2007 127250 secteur 2 0 0 1 0 2 0
j'ai la meme chose pour tout les mois de l'année et pour 2006, 2007 etc.....
je choisis l'année 2006 et secteur 1
le but est d'obtenir le total de chaque colonne pour les lignes qui correspondent aux critères
puis de copier vers une autre feuille du classeur pour obtenir ceci
Décembre 2007 secteur 1 total colonne 1, total colonne 2, total colonne 3 etc....
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
13 mars 2008 à 21:10
13 mars 2008 à 21:10
Bonsoir antic80,
Merci, je vais essayer de m'en sortir, pour l'instant je m'arrête et je reprendrai demain.
Bonne soirée.
Merci, je vais essayer de m'en sortir, pour l'instant je m'arrête et je reprendrai demain.
Bonne soirée.
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
13 mars 2008 à 21:14
13 mars 2008 à 21:14
ok merci a toi
Bonjour à vous deux,
désolé de m'immiscer dans votre correspondance, mais ... vu le format des données initiales (post 21), n'est-il pas judicieux d'utiliser un tableau croisé dynamique ?
Un tableau croisé pourra tout à fait renvoyer dans une autre feuille ou dans un autre classeur le total de chaque colonne (si elles sont identifiées par un en-tête), en fonction des critères choisis (mis en champs de page).
Je dis une connerie ?
A+
désolé de m'immiscer dans votre correspondance, mais ... vu le format des données initiales (post 21), n'est-il pas judicieux d'utiliser un tableau croisé dynamique ?
Un tableau croisé pourra tout à fait renvoyer dans une autre feuille ou dans un autre classeur le total de chaque colonne (si elles sont identifiées par un en-tête), en fonction des critères choisis (mis en champs de page).
Je dis une connerie ?
A+
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
14 mars 2008 à 08:12
14 mars 2008 à 08:12
merci pour ta réponse mias je dois automatiquement passé par vba car mon tableau contient des centaines de lignes et la personne qui va l'utiliser est incapable de réaliser ce genre de manipulation. de plus la je montre un exemple avec 2007, mais si la personne choisi de travailler sur 2005....
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
14 mars 2008 à 10:39
14 mars 2008 à 10:39
Bonjour antic80,
Ci dessous la procédure :
Option Base 1
Sub antic80()
Dim tableau(12, 15) As String
Dim total As Integer
Sheets("par secteur").Select
lastline = Range("A65365").End(xlUp).Row ' échange colonne "p" par "A"
'------------------------------------------------------------
' je leurs donnent une valeur
annéedébut = 2007
mois = "Décembre"
secteur = "secteur 1"
'------------------------------------------------------------
For i = 1 To lastline
If Cells(i, 2) = annéedébut And Cells(i, 1) = mois And Cells(i, 4) = secteur Then
Cells(i, 1).Select
j = j + 1
For k = 1 To 15
tableau(j, k) = ActiveCell.Offset(0, k - 1).Value
Next
End If
Next i
For z = 5 To 12
If IsNumeric(tableau(1, z)) Then
For p = 1 To j
If IsNumeric(tableau(p, z)) Then
total = total + tableau(p, z)
' MsgBox total
End If
Next p
Sheets("test").Select
If z = 5 Then ' on écrit sur la même ligne
Range("A65365").End(xlUp).Offset(1, 0).Select
ActiveCell.Value = tableau(1, 1)
ActiveCell.Offset(0, 1) = tableau(1, 2)
ActiveCell.Offset(0, 2) = tableau(1, 4)
End If
ActiveCell.Offset(0, z - 2) = total
' --- Réinitialiser la variable "total" sur 0
total = 0
End If
Next z
End Sub
Chez moi sa marche.
Bonne fin de semaine.
Ci dessous la procédure :
Option Base 1
Sub antic80()
Dim tableau(12, 15) As String
Dim total As Integer
Sheets("par secteur").Select
lastline = Range("A65365").End(xlUp).Row ' échange colonne "p" par "A"
'------------------------------------------------------------
' je leurs donnent une valeur
annéedébut = 2007
mois = "Décembre"
secteur = "secteur 1"
'------------------------------------------------------------
For i = 1 To lastline
If Cells(i, 2) = annéedébut And Cells(i, 1) = mois And Cells(i, 4) = secteur Then
Cells(i, 1).Select
j = j + 1
For k = 1 To 15
tableau(j, k) = ActiveCell.Offset(0, k - 1).Value
Next
End If
Next i
For z = 5 To 12
If IsNumeric(tableau(1, z)) Then
For p = 1 To j
If IsNumeric(tableau(p, z)) Then
total = total + tableau(p, z)
' MsgBox total
End If
Next p
Sheets("test").Select
If z = 5 Then ' on écrit sur la même ligne
Range("A65365").End(xlUp).Offset(1, 0).Select
ActiveCell.Value = tableau(1, 1)
ActiveCell.Offset(0, 1) = tableau(1, 2)
ActiveCell.Offset(0, 2) = tableau(1, 4)
End If
ActiveCell.Offset(0, z - 2) = total
' --- Réinitialiser la variable "total" sur 0
total = 0
End If
Next z
End Sub
Chez moi sa marche.
Bonne fin de semaine.
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
14 mars 2008 à 11:47
14 mars 2008 à 11:47
merci pour ta réponse
j'ai encore 2 questions
tout d'abord je dois saisir les 2 années dans des textbox et choisir le secteur dans une combobox. le probleme est que le reste du code n'arrive pas a récuperer les bonnes valeurs.
ensuite comme je choisi 2 années j'aimerais recopier ce code pour la 2e année mais plutot que de m'inscire les 2 années l'une en dessous de l'autre le code m'efface la 1ere ligne.
j'ai encore 2 questions
tout d'abord je dois saisir les 2 années dans des textbox et choisir le secteur dans une combobox. le probleme est que le reste du code n'arrive pas a récuperer les bonnes valeurs.
ensuite comme je choisi 2 années j'aimerais recopier ce code pour la 2e année mais plutot que de m'inscire les 2 années l'une en dessous de l'autre le code m'efface la 1ere ligne.
Le Pingou
Messages postés
12187
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 novembre 2024
1 449
14 mars 2008 à 13:21
14 mars 2008 à 13:21
Bonjour antic80,
Envoyez moi le/s code/s concerné/s, se sera plus simple.
Envoyez moi le/s code/s concerné/s, se sera plus simple.
antic80
Messages postés
4785
Date d'inscription
lundi 30 mai 2005
Statut
Contributeur
Dernière intervention
9 septembre 2009
1 159
14 mars 2008 à 14:55
14 mars 2008 à 14:55
en fait c'est ici
annéedébut = Année1.Value
annéefin = Année2.Value
'décembre'
j = 0
Sheets("par secteur").Select
lastline = Range("A65365").End(xlUp).Row ' échange colonne "p" par "A"
'------------------------------------------------------------
' je leurs donnent une valeur
mois = "Décembre"
'------------------------------------------------------------
For i = 1 To lastline
If Cells(i, 2) = annéedébut And Cells(i, 1) = mois And Cells(i, 4) = "Cergy Village" Then
Cells(i, 1).Select
j = j + 1
For k = 1 To 15
tableau(j, k) = ActiveCell.Offset(0, k - 1).Value
au niveau de If Cells(i, 2) = annéedébut
si j'ecris directement 2006 a la place de annéedébut ca marche
si je met annéedébut seulement ca ne marche pas
Année1 et Année2 ce sont les noms de mes textbox
annéedébut = Année1.Value
annéefin = Année2.Value
'décembre'
j = 0
Sheets("par secteur").Select
lastline = Range("A65365").End(xlUp).Row ' échange colonne "p" par "A"
'------------------------------------------------------------
' je leurs donnent une valeur
mois = "Décembre"
'------------------------------------------------------------
For i = 1 To lastline
If Cells(i, 2) = annéedébut And Cells(i, 1) = mois And Cells(i, 4) = "Cergy Village" Then
Cells(i, 1).Select
j = j + 1
For k = 1 To 15
tableau(j, k) = ActiveCell.Offset(0, k - 1).Value
au niveau de If Cells(i, 2) = annéedébut
si j'ecris directement 2006 a la place de annéedébut ca marche
si je met annéedébut seulement ca ne marche pas
Année1 et Année2 ce sont les noms de mes textbox
13 mars 2008 à 16:47
total1....
total2...
etc...