maharaja12
Messages postés1Date d'inscriptionsamedi 17 octobre 2009StatutMembreDernière intervention 7 novembre 2009
-
7 nov. 2009 à 11:13
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
7 nov. 2009 à 17:02
Bonjour,
je suis debutant en VBS et j ai cree une base de donnee composées de lignes contenant des chiffres. A chaque fois que je dois rentrer une donner j'insere une nouvelle ligne en haut (A2).
Puis je dois calculer la somme de chaque colonne et le mettre dans la derniere cellule de cette colonne en bas, mais j ai un probleme: a chaque fois la somme ne tient pas compte des nouvelles donnees des nouvelles lignes.
cela se passe comme suit
1- x=somme(A2:A20) au depart c est bon.
2- Insertion de la nouvelle ligne
3- x=somme(A3:A20) ce qui ne tient pas compte de la valeur dans A2
.
.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 nov. 2009 à 17:02
Salut
Le VB de Excel est du VBA, pas du VB6 ni du VBS.
Heureusement que tu parles de "A2" pour quon comprenne que tu es dans une feuille, parce que sinon, on aurait pu chercher longtemps de quoi tu parlais !
Pense à bien définir ton espace de travail la prochaine fois.
"x= somme(A2:A20)" n'est pas une instruction valide, donc difficile de te dire comment la corriger ...
Supposons que ce calcul de somme soit dans une cellule d'une feuille.
Puisque tu insères avant ton Range, il est normal qu'il décale aussi l'adressage.
Pour que les calculs des cellules augmente automatiquement, il faudrait insérer ta ligne à l'intérieur de la zône ciblée : Si ton calcul de somme commence en A2, il faut insérer à la ligne 3.
Il te suffirait donc d'ajouter une ligne vierge en haut de cette zone, de ne pas t'en servir mais de l'englober dans ta zône cible.
Ton calcul de somme est faite (semble t-il) dans une macro.
Si tu écris en dur dans ton programme l'adressage de ta zone, il n'y aucun évènement qui ira le modifier, c'est normal.
Il te faut donc le paramétrer en utilisant une référence appartenant à la feuille :
Sur ta feuille, sélectionne ta zone A2:A20 puis donne-lui un nom (menu Insersion, Nom, Définir). Appelllons-la maZone.
Dans ton programme, au lieu de "A2:A20" (avec "), mets-y le nom de ta zone maZone (sans ")
maZone est un objet de la feuille. Elle obéira donc aux règles du décalage si tu insères une ligne à l'intérieur de cette zone.
Tu n'as donc rien à faire côté programme.
Vala
Jack, =fr MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)