[vba] probleme addition
antic80
Messages postés
4877
Statut
Contributeur
-
antic80 Messages postés 4877 Statut Contributeur -
antic80 Messages postés 4877 Statut Contributeur -
Bonjour,
j'ai un tableau de dimension n : tableau(n)
j'ai un total qui se fait comme suit
total = total + tableau(n)
comme j'ai plusieurs total a faire j'ai fait un truc comme ca
for i= 1to 5
total(i)=total(i)+tableau(i)
next i
en admettant que mes valeurs soit 2,3,4,5,6 au lieu d'obtenir 20 j'obtient 23456
pourquoi ?
j'ai un tableau de dimension n : tableau(n)
j'ai un total qui se fait comme suit
total = total + tableau(n)
comme j'ai plusieurs total a faire j'ai fait un truc comme ca
for i= 1to 5
total(i)=total(i)+tableau(i)
next i
en admettant que mes valeurs soit 2,3,4,5,6 au lieu d'obtenir 20 j'obtient 23456
pourquoi ?
A voir également:
- [vba] probleme addition
- Formule addition excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Bash addition - Forum Programmation
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
19 réponses
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
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 .....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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...!
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.
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
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
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.
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
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....
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.
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+
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.
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.
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.
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
total1....
total2...
etc...