Excel parcourt tableau + somme
avalonclass666
Messages postés
6
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis actuellement en galere pour effectuer une tache qui me semblait trivial.
Je ne connais pas du tout le VBA, mais pour des besoiins pro, j'ai été obligé de mis mettre.
Voila mon probleme. J'ai un listing de produit. Et je voudrais recupéré certaines infos contenu dans le linsting pour les mettres en forme dans une autre page de mon classeur pour impression.
En gros la ligne est du genre ( en simplifié )
code -- nb produit -- prix
J'aimerais une fonction qui me permettrai de parcourir la colonne nb produit et lorsque jarrive a une certaine valeur ( en faisant la somme de chaques valeurs ) je puisse avoir les coordonnés de la cellule ou je suis arrivé et de pouvoir me servir de la valeur contenu dans celle-ci.
Merci d'avance pour l'aide fournit.
Je suis actuellement en galere pour effectuer une tache qui me semblait trivial.
Je ne connais pas du tout le VBA, mais pour des besoiins pro, j'ai été obligé de mis mettre.
Voila mon probleme. J'ai un listing de produit. Et je voudrais recupéré certaines infos contenu dans le linsting pour les mettres en forme dans une autre page de mon classeur pour impression.
En gros la ligne est du genre ( en simplifié )
code -- nb produit -- prix
J'aimerais une fonction qui me permettrai de parcourir la colonne nb produit et lorsque jarrive a une certaine valeur ( en faisant la somme de chaques valeurs ) je puisse avoir les coordonnés de la cellule ou je suis arrivé et de pouvoir me servir de la valeur contenu dans celle-ci.
Merci d'avance pour l'aide fournit.
A voir également:
- Excel parcourt tableau + somme
- Tableau word - Guide
- Trier un tableau excel - Guide
- Somme tableau excel - Guide
- Imprimer un tableau excel - Guide
- Liste déroulante excel - Guide
6 réponses
Bonjour,
Voici un bout de code qui devrait pouvoir te dépanner.
Les données utilisées sont placées dans les 3 premières colonne de Feuil1 :
A B C
1 Code Nb Produit Prix
2 A 5 15,55
3 B 2 222,78
4 C 3 78,95
5 D 7 99
6 E 9 105,78
7 F 10 28,36
La procédure Parcours affiche une boîte de dialogue pour saisir la somme que l'on veut atteindre. Puis elle parcourt toutes les lignes jusqu'à ce que le cumul soit égal au nombre saisi ou supérieur.
Par exemple, si on saisit 10, le message suivant est affiché : "La somme des produits correspondant à 10 est atteinte en ligne 4". Si on saisit 12, le message affiché est "Somme demandée : 12. La somme des produits approchée par excés : 17 en ligne 5".
Sub Parcours()
Dim UneCertaineValeur As Integer
Dim compteur As Integer
Dim somme As Integer
Dim FinBoucle As Boolean
somme = 0
compteur = 2
FinBoucle = False
UneCertaineValeur = InputBox("Saisissez la somme à atteindre.")
If (UneCertaineValeur = 0) Then
MsgBox ("Une valeur doit être saisie.")
Else
While (FinBoucle = False)
Set CelluleActive = Feuil1.Cells(compteur, 2)
If (CelluleActive.Value = "") Then
FinBoucle = True
Else
If (somme = UneCertaineValeur) Then
FinBoucle = True
Else
If (somme < UneCertaineValeur) Then
somme = somme + CelluleActive.Value
compteur = compteur + 1
Else
FinBoucle = True
End If
End If
End If
Wend
compteur = compteur - 1
Select Case (somme)
Case 0
MsgBox ("La somme est nulle.")
Case UneCertaineValeur
MsgBox ("La somme des produits correspondant à " + Str$(UneCertaineValeur) + _
" est atteinte en ligne " + Str$(compteur))
Case Else
MsgBox ("Somme demandée : " + Str$(UneCertaineValeur) + Chr$(13) + _
"La somme des produits approchée par excés : " + Str$(somme) + _
" en ligne " + Str$(compteur))
End Select
End If
End Sub
Voici un bout de code qui devrait pouvoir te dépanner.
Les données utilisées sont placées dans les 3 premières colonne de Feuil1 :
A B C
1 Code Nb Produit Prix
2 A 5 15,55
3 B 2 222,78
4 C 3 78,95
5 D 7 99
6 E 9 105,78
7 F 10 28,36
La procédure Parcours affiche une boîte de dialogue pour saisir la somme que l'on veut atteindre. Puis elle parcourt toutes les lignes jusqu'à ce que le cumul soit égal au nombre saisi ou supérieur.
Par exemple, si on saisit 10, le message suivant est affiché : "La somme des produits correspondant à 10 est atteinte en ligne 4". Si on saisit 12, le message affiché est "Somme demandée : 12. La somme des produits approchée par excés : 17 en ligne 5".
Sub Parcours()
Dim UneCertaineValeur As Integer
Dim compteur As Integer
Dim somme As Integer
Dim FinBoucle As Boolean
somme = 0
compteur = 2
FinBoucle = False
UneCertaineValeur = InputBox("Saisissez la somme à atteindre.")
If (UneCertaineValeur = 0) Then
MsgBox ("Une valeur doit être saisie.")
Else
While (FinBoucle = False)
Set CelluleActive = Feuil1.Cells(compteur, 2)
If (CelluleActive.Value = "") Then
FinBoucle = True
Else
If (somme = UneCertaineValeur) Then
FinBoucle = True
Else
If (somme < UneCertaineValeur) Then
somme = somme + CelluleActive.Value
compteur = compteur + 1
Else
FinBoucle = True
End If
End If
End If
Wend
compteur = compteur - 1
Select Case (somme)
Case 0
MsgBox ("La somme est nulle.")
Case UneCertaineValeur
MsgBox ("La somme des produits correspondant à " + Str$(UneCertaineValeur) + _
" est atteinte en ligne " + Str$(compteur))
Case Else
MsgBox ("Somme demandée : " + Str$(UneCertaineValeur) + Chr$(13) + _
"La somme des produits approchée par excés : " + Str$(somme) + _
" en ligne " + Str$(compteur))
End Select
End If
End Sub
Pardonne cette question stupide, mais je vois nul part ou modifié pour changé la colonne nb produit. ( car enfait elle est pas vraiment en colonne B )
désolé ... :D
désolé ... :D
dans le code de framétaux !
change
le 2 par le vrai numéro de colonne dans laquel se trouve ton NB
+
change
Set CelluleActive = Feuil1.Cells(compteur, 2)
le 2 par le vrai numéro de colonne dans laquel se trouve ton NB
+
Merci mille fois pour vos réponses
Je me permet une derniere question bete, comment faire pour prendre la valeur d'une cellule quand on ne connais pas a l'avance ces coordonnées. En dautre mot,
Sheets("LISTING").[vaiablecolonne, variableligne].Value
Niveau syntaxe je bloque, et je n'arive pas a trouver l'info, j'ai limpression que c'est trop simple.
Je me permet une derniere question bete, comment faire pour prendre la valeur d'une cellule quand on ne connais pas a l'avance ces coordonnées. En dautre mot,
Sheets("LISTING").[vaiablecolonne, variableligne].Value
Niveau syntaxe je bloque, et je n'arive pas a trouver l'info, j'ai limpression que c'est trop simple.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dsl double post, mais je voulais savoir si il était possible de passer des variables/constantes en arguments ?
genre
Sheets("LISTING").[vaiablecolonne+3, variableligne+compteur].Value
??
genre
Sheets("LISTING").[vaiablecolonne+3, variableligne+compteur].Value
??
Bonjour,
En utlisant cette instruction, tu peux récupérer la valeur de n'importe quelle cellule.
Set CelluleActive = Feuil1.Cells(ligne, colonne)
En la plaçant dans une boucle, tu peux balayer une plage dont tu reçois les coordonnées en paramètres dans ta procédure. Par exemple :
Sub Parcours( LigneA as integer, ColonneA as integer, LigneB as integer, ColonneB as integer)
dim Ligne_index as integer
dim Col_index as integer
for Ligne_index = LigneA to Ligne B
for Col_index = ColonneA to ColonneB
Set CelluleActive = Feuil1.Cells(Ligne_index, Col_index + 3)
.......
next Col_index
next Ligne_index
end sub
En utlisant cette instruction, tu peux récupérer la valeur de n'importe quelle cellule.
Set CelluleActive = Feuil1.Cells(ligne, colonne)
En la plaçant dans une boucle, tu peux balayer une plage dont tu reçois les coordonnées en paramètres dans ta procédure. Par exemple :
Sub Parcours( LigneA as integer, ColonneA as integer, LigneB as integer, ColonneB as integer)
dim Ligne_index as integer
dim Col_index as integer
for Ligne_index = LigneA to Ligne B
for Col_index = ColonneA to ColonneB
Set CelluleActive = Feuil1.Cells(Ligne_index, Col_index + 3)
.......
next Col_index
next Ligne_index
end sub