Mise à jour macro

Bonjour,

Serait-il possible que le code VBA se mette à jour en fonction d'insertion ou de suppression de lignes dans le classeur?

Merci de votre retour.

Bonjour,

Serait-il possible que le code VBA se mette à jour en fonction d'insertion ou de suppression de lignes dans le classeur?

Merci de votre retour.

Bonjour,

Non ce n'est pas possible de façon automatique. C'est pourquoi on réfléchis bien à la structure du classeur et du code pour éviter ce genre d'erreur, et l'on préfère les fonctions déjà disponibles sous Excel plutôt que de "bidouiller" sous VBA des équivalents.

En revanche, l'utilisation de plages nommées permet d'éviter ce genre de désagréments. En effet, les références aux plages nommées restent correctes (à ma connaissance) sous VBA, même si la ou les cellules en questions ont changé de place dans le classeur.

Merci de votre réponse.

En effet j'utilise pas mal de plages notamment avec la validation de données.

Comment procéder concernant les plages de données sous VBA?

Merci

Bonjour,

Serait-il possible que le code VBA se mette à jour en fonction d'insertion ou de suppression de lignes dans le classeur?

Merci de votre retour.

Bonjour,

Non ce n'est pas possible de façon automatique. C'est pourquoi on réfléchis bien à la structure du classeur et du code pour éviter ce genre d'erreur, et l'on préfère les fonctions déjà disponibles sous Excel plutôt que de "bidouiller" sous VBA des équivalents.

En revanche, l'utilisation de plages nommées permet d'éviter ce genre de désagréments. En effet, les références aux plages nommées restent correctes (à ma connaissance) sous VBA, même si la ou les cellules en questions ont changé de place dans le classeur.

Ok, mettons, tu nommes ta plage A1:C100 "MaPlage". Dans le code VBA :

Range("A1:C100")
'Devient :
Range("MaPlage")

La seconde écriture étant toujours valide même si tu insères une ligne au dessus de la ligne 1 par exemple.

Cellule E18 est sous forme de liste déroulante dont les données sont sur une autre feuille avec la plage A4:A8.

Dans mon code VBA pour effacer cette cellule :

Range(",E18").Value = ""

Si je comprends, je dois définir un nom à ma plage et dans le code VBA utiliser ce nom dans le code?

Par exemple : nom de plage A4:A8 = pratique

le code sera : Range("pratique").value=""

Merci

Ok, mettons, tu nommes ta plage A1:C100 "MaPlage". Dans le code VBA :

Range("A1:C100")
'Devient :
Range("MaPlage")

La seconde écriture étant toujours valide même si tu insères une ligne au dessus de la ligne 1 par exemple.

Bonjour,

domy a écrit :

Serait-il possible que le code VBA se mette à jour en fonction d'insertion ou de suppression de lignes dans le classeur?

ça marche, sur mon pc : le code VBA se met bien à jour chaque fois que j'ajoute ou supprime une ligne de code VBA.

y'a pas à dire, c'est chouette, un éditeur de texte plein écran ! surtout pour ceux qui ont connu les commandes pip ou edlin !

dhany

Range("E18").Value = ""

Par exemple : nom de plage A4:A8 = pratique

le code sera : Range("pratique").value=""

Si dans ton code tu travailles sur "E18", c'est cette cellule qu'il faut renommer... Y'a pas de piège !

Bonjour,

En ce qui me concerne, lorsque j'insère ou supprime une ligne dans ma feuille où se trouve mon tableau excel, mes macro ne fonctionnent plus correctement.

Par exemple

Range("E22").MergeArea.ClearContents ne correspond plus à la cellule E22.

Je précise que mes macro font parties des Modules.

Merci

Bonjour,

domy a écrit :

Serait-il possible que le code VBA se mette à jour en fonction d'insertion ou de suppression de lignes dans le classeur?

ça marche, sur mon pc : le code VBA se met bien à jour chaque fois que j'ajoute ou supprime une ligne de code VBA.

y'a pas à dire, c'est chouette, un éditeur de texte plein écran ! surtout pour ceux qui ont connu les commandes pip ou edlin !

dhany

Bonjour,

En ce qui me concerne, lorsque j'insère ou supprime une ligne dans ma feuille où se trouve mon tableau excel, mes macro ne fonctionnent plus correctement.

Par exemple

Range("E22").MergeArea.ClearContents ne correspond plus à la cellule E22.

Je précise que mes macro font parties des Modules.

Merci

Bonjour,

domy a écrit :

Serait-il possible que le code VBA se mette à jour en fonction d'insertion ou de suppression de lignes dans le classeur?

ça marche, sur mon pc : le code VBA se met bien à jour chaque fois que j'ajoute ou supprime une ligne de code VBA.

y'a pas à dire, c'est chouette, un éditeur de texte plein écran ! surtout pour ceux qui ont connu les commandes pip ou edlin !

dhany

J'ai bien compris ton problème, et c'est aussi ce que je disais, ça ne peut fonctionner si tu laisses tes cellules référencées ainsi. C'est juste que dans ton précédent message, tu proposes de renommer une autre plage que celle à laquelle fait référence ton code initiale. Donc je précise que dans ton extrait précédent, c'est bien E18 et pas A4:A8 qu'il faut renommer.

Donc pour renommer la cellule E18, qui est une liste déroulante avec les validations de données(A4:A8) présentent sur une autre feuille je fais clic droit "définir un nom" et je donne le nom par exemple "case1".

Et dans mon code j'inscrits : Range("case1").value=""

Et de cette façon si j'insère ou supprime des lignes dans mon tableau au-dessus-dessous de E18, je ne devrais pas changer mon code à l'avenir?

Merci de confirmer si j'ai bien compris.

Bonjour,

En ce qui me concerne, lorsque j'insère ou supprime une ligne dans ma feuille où se trouve mon tableau excel, mes macro ne fonctionnent plus correctement.

Par exemple

Range("E22").MergeArea.ClearContents ne correspond plus à la cellule E22.

Je précise que mes macro font parties des Modules.

Merci

Bonjour,

ça marche, sur mon pc : le code VBA se met bien à jour chaque fois que j'ajoute ou supprime une ligne de code VBA.

y'a pas à dire, c'est chouette, un éditeur de texte plein écran ! surtout pour ceux qui ont connu les commandes pip ou edlin !

dhany

J'ai bien compris ton problème, et c'est aussi ce que je disais, ça ne peut fonctionner si tu laisses tes cellules référencées ainsi. C'est juste que dans ton précédent message, tu proposes de renommer une autre plage que celle à laquelle fait référence ton code initiale. Donc je précise que dans ton extrait précédent, c'est bien E18 et pas A4:A8 qu'il faut renommer.

A priori oui, mais le plus simple reste de le tester... Tu seras fixé tout de suite !

Merci, je viens de tester et c'est ok.

A priori oui, mais le plus simple reste de le tester... Tu seras fixé tout de suite !

Rechercher des sujets similaires à "mise jour macro"