drine des iles
Messages postés42Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention26 septembre 2006
-
10 janv. 2006 à 22:43
drine des iles
Messages postés42Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention26 septembre 2006
-
13 janv. 2006 à 23:22
Bonjour,
Comment puis-je, en vba sur Excel, créer une procédure qui me permettent d'additionner toutes les cellules contenue dans une plage dont la taille est variable?
En clair: le hic est que ma plage de cellules démarre toujours en H20 mais ne fini jamais sur la même ligne .
exemple: le première fois la somme doit etre calculée sur H20:H30 puis, la fois suivante le calcul se fera sur la plage H20:H170 ...
PLEASE HELP ME !!!!
A voir également:
Additionner toutes les cellules d'une plage de taille variable
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 11 janv. 2006 à 00:11
Déjà, tout dépend si l'utilisateur doit ou non entrer le numéro de la ligne finale. S'il le doit, un code en VBA est stupide de ce fait même (car il a plus vite fait d'écrire =SOMME("A1:A2") !!!)
Il faut procéder par itération (parcourir toutes tes cellules en les additionnant les unes aux autres).
L'autre quesition importante est de savoir s'il y a ou non des "trous" dans la liste. La solution que je vais te proposer suppose qu'il n'y en ait pas car elle considérera la liste finie dès lors qu'elle rencontrera une cellule vide :
With Worksheets("Feuil1")
varCompteur = 20
varTotal = 0
varValue = CStr(.Range("H20").Value)
Do While Not (varValue = "")
varTotal = varTotal + Val(varValue)
varCompteur = varCompteur + 1
varValue = CStr(.Range("H" & CStr(varCompteur)).Value)
Loop
End With
'Note que tu ne nous a pas dit où tu voulais mettre ce résultat !!!
'Ici, dans la 1ère feuille, dans la cellule A1!
Worksheets(1).Range("A1").Value = varTotal
Mais tu peux te contenter d'utiliser la variable pour en faire ce que tu veux!
Pour info, la fonction CStr(valeur) convertie tout type de valeur en type Chaîne de caractère (String) en enlevant les espaces d'avant les nombres (pas comme Str() !!!).
En revanche, la fonction Val(string) fait l'inverse! I.e. qu'elle convertie une string en vrai nombre (additionnable et tout et tout!).
Note également que le symbole "&" concatène deux chaînes. I.e., les mets bout à bout.
Si ce genre d'additions deviennent récurrentes, pense à créer une fonction avec ce code!
Si tu ne sais pas faire : demande-nous, on est là pour ça !!! Enfin, après t'être tout de même donné la peine de recherche un minimum dans l'aide du VBA et sur ce site!!!
Est-ce que cela répond à ta question ???
As-tu besoin de plus d'explications ???
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 12 janv. 2006 à 20:48
Public Function funcSommeColonne(ByVal argColonne As String)
With Worksheets("Feuil1")
varCompteur = 20
varTotal = 0
varValue = CStr(.Range(
argColonne
& "20"
).Value)
Do While Not (varValue = "")
varTotal = varTotal + Val(varValue)
varCompteur = varCompteur + 1
varValue = CStr(.Range(
argColonne
& CStr(varCompteur)).Value)
Loop
End With
End Function
drine des iles
Messages postés42Date d'inscriptionmardi 10 janvier 2006StatutMembreDernière intervention26 septembre 2006 12 janv. 2006 à 20:09
merci encore pour votre aide à tous.
Désolée de vous re-déranger mais aprés avoir chercher plusieurs heures, je n'arrive toujours pas à créer les arguments qui permettront de transformer ce code en fonction. Donc, j'ai une fonction qui fonctionne mais uniquement sur la colonne H !!! je n'arrive pas à créer les arguments qui permettront de dire : la cellule de départ est H20, ou F20... et la colonne dans laquelle on se place est la colonne H ou F....
halalala, c'est dur de débuter !!!!
drine des iles
Vous n’avez pas trouvé la réponse que vous recherchez ?