[Déplacé VB6 --> VBS][Euh, non, VBA] somme

Signaler
Messages postés
1
Date d'inscription
samedi 17 octobre 2009
Statut
Membre
Dernière intervention
7 novembre 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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
.
.

Merci pour votre aide.

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
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)