Valeur cellule code VBA

Fermé
florebobosch - 16 juin 2016 à 11:02
Arkana0 Messages postés 4400 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 16 juin 2016 à 17:31
Bonjour,

J'ai un code VBA qui, sous une certaine condition, met des "1" dans certaines cellules d'une feuille. Tout marche bien sauf si j'insère des lignes dans cette feuille : dans ce cas tous les noms des cellules sont décalés (si j'insère une ligne entre A12 et A12 la cellule qui s'appelait A12 devient A13 etc) et les "1" ne sont plus aux bons endroits.

Savez-vous comment je peux éviter ce problème ? Mon document sera ensuite utilisé par d'autres personnes qui doivent pouvoir insérer ou supprimer des lignes comme bon leur semble...

Je ne sais pas quoi faire à part renommer toute mes cellules (ce qui prend énormément de temps vu le nombre de feuilles que j'ai!!!)

Merci d'avance,

Flore


2 réponses

Arkana0 Messages postés 4400 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
16 juin 2016 à 11:05
Bonjour,

Avec ce qe tu exposes, on peut supposer que tu utilises une boucle et que tu incrémentes la ligne à chaque passage de la boucle.

Pour pallier à ton problème, il suffit de décrémenter la ligne considérée à chaque rajout de ligne et ça devrait le faire, non ?
0
florebobosch
16 juin 2016 à 11:42
Bonjour,

Merci pour ta réponse, cependant je n'utilise pas de boucle...
En fait selon la valeur d'une case dans ma feuille appelée ENTETE, soit une feuille est affichée et les cases prennent la valeur 1, soit la feuille est masquée.

Je n'est pas besoin de boucle pour ça enfin jusqu'ici je n'en avais pas besoin en tout cas...
0
Arkana0 Messages postés 4400 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181 > florebobosch
16 juin 2016 à 15:40
Tu utilises quoi comme tableur ? Normalement, Excel ne pose pas les problèmes que tu décrits et réadapte ses formules en cas d'ajout de lignes...
0
florebobosch > Arkana0 Messages postés 4400 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023
16 juin 2016 à 15:42
C'est Excel de microsoft word, dans le tableau les formules sont bien adaptées mais pas dans le code VBA...
0
Arkana0 Messages postés 4400 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181 > florebobosch
16 juin 2016 à 15:51
As-tu utilisé de faire une Function et non-pas une Sub dans code VBA ? Cela permet de faire un code qui va réagir comme une formule Excel classique : on y donne des valeurs d'entrées et en fonction de cela, la Function renvoie une valeur (ici ton 1) ?

L'avantage, c'est que normalement, les numéros de lignes s'adapteraient à une insertion.
0
florebobosch
16 juin 2016 à 17:28
Pour l'instant le tout rentrait dans un "Private Sub Worksheet_Change(ByVal Target As Range)", est-ce que je peux remplacer sub par function et tu crois que ça résoudrait alors le problème ?

Pour l'instant j'ai opté pour la solution qui consiste à changer le nom de chaque cellule, ça m'a pris du temps mais ça devrait marcher!
Dans tous les cas j'aimerais bien trouver une autre solution pour la prochaine fois!
Encore merci pour ton aide :)

Bonne fin de journée,

Flore
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 juin 2016 à 11:08
Bonjour,

Demande avec explications trop floues pour proposer une solution.

au besoin
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse


transféré dans le forum programmation-vba
0
florebobosch
16 juin 2016 à 11:47
Bonjour,

je ne peux pas vous transmettre mon classeur car il contient des données confidentielles... Je vais essayer d'expliquer mon problème plus clairement :

J'ai une feuille appelée ENTETE, une autre appelée STATION1
Dans ENTETE, je veux que lorsque l'option STATION1 est choisie grâce à une liste déroulante, la feuille STATION1 s'affiche et certaines cases (A10, A11, A12 et A15,A16) prennent la valeur "1".

Jusqu'ici tout va bien.

Le problème est que les personnes qui utiliseront ce classeur voudront peut-être insérer une nouvelle ligne entre A12 et A13 par exemple. Alors ma ligne 15 devient ma ligne 16 et ma ligne 16 devient ma ligne 17 donc lorsque STATION1 sera choisie, les "1" ne s'afficheront plus dans les cases A10, A11, A12, A15 et A16 mais dans A10, A11, A12, A16 et A17 puisque les lignes ont été décalées...

Est-ce plus clair ?
Merci pour votre aide!

Flore
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > florebobosch
16 juin 2016 à 12:10
je ne peux pas vous transmettre mon classeur car il contient des données confidentielles...
et faire un petit effort pour mettre des données bidons ?

pas d'effort de ta part -----> pas d'effort de la mienne

bonne continuation
0
florebobosch
16 juin 2016 à 14:21
Je ne comprend pas pourquoi vous réagissez comme ça... Cela va me prendre beaucoup de temps de refaire un code et créer un fichier qui ne me servira pas d'autant que le but n'est pas que vous m'écriviez la solution, j'aimerais simplement savoir si vous avez déjà eu à faire à ce genre de situation et si vous savez comment y remédier,

Tant pis, merci quand même, bonne journée!
0