Valeur cellule code VBA
florebobosch
-
Arkana0 Messages postés 1980 Date d'inscription Statut Modérateur Dernière intervention -
Arkana0 Messages postés 1980 Date d'inscription Statut Modérateur Dernière intervention -
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
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
-
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 ?-
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... -
-
-
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. -
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
-
-
Bonjour,
Demande avec explications trop floues pour proposer une solution.
au besoinMettre 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-
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 -
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!
-