améliorer module pour maintenance plus simple

rudymagny

XLDnaute Occasionnel
Bonjour le forum,
Voilà j'ai un classeur avec un module en VBA qui me permet d'attribuer des noms à des colonnes!
Le problème c'est que si je modifie mon tableau (déplacer colonnes etc..) je dois me retaper tout le module!
Est il possible de me dire comment l'améliorer pour le rendre plus simple?
J'ai mis un exemple -->ouvrir VB et regarder le module 1
il ne fonctionne pas dans ce classeur mais je voudrais savoir comment l'améliorer?

[file name=Classeur1_20060420181652.zip size=13637]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20060420181652.zip[/file]
 
Dernière édition:

porcinet82

XLDnaute Barbatruc
Salut Rudymagny,

Comme je ne comprends pas tout le code et que je peux pas tester, je te propose une solution que je te laisse tester.
Moi je verrais bien un truc du genre :

Code:
Sub Attribuer_formule_colonnes() 
'je supose que le mois est dans la cellule A1 pour l'exemple
mois = Cells(1, 1).Value
Sheets(mois).Activate

Columns('C:C').Select
ActiveWorkbook.Names.Add Name:='ColGet' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C3,,,COUNTA(' & mois & '!C3)-1)'

Columns('E:E').Select
ActiveWorkbook.Names.Add Name:='ColGdP' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C5,,,COUNTA(' & mois & '!C5)-1)'
 
'...
'le reste de ton code pour seulement un mois puisqu'on a changer le Janvier dans le code par la variable mois
Range('A1').Select
End Sub

Ainsi avec ce bout de code, au lieu d'avoir le code pour 12 mois, tu l'as seulement pour 1 mois.

Tiens moi au courant,

@+
 

rudymagny

XLDnaute Occasionnel
Bonjour porcinet82 et merci de ta réponse!
j'ai mis en application ta réponse et c'est pas mal du tout parce que je réduis considérablement mon module et donc plus simple pour la maintenance de mon appli:

Sub Attribuer_formule_colonnes(mois)
Sheets(mois).Activate
Columns('C:C').Select
ActiveWorkbook.Names.Add Name:='ColGet' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C3,,,COUNTA(' & mois & '!C3)-1)'
Columns('E:E').Select
ActiveWorkbook.Names.Add Name:='ColGdP' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C5,,,COUNTA(' & mois & '!C5)-1)'
Columns('F:F').Select
ActiveWorkbook.Names.Add Name:='ColAcc' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C6,,,COUNTA(' & mois & '!C6)-1)'
Columns('H:H').Select
ActiveWorkbook.Names.Add Name:='ColU' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C8,,,COUNTA(' & mois & '!C8)-1)'
Columns('O:O').Select
ActiveWorkbook.Names.Add Name:='ColCreation' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C15,,,COUNTA(' & mois & '!C15)-1)'
Columns('P:p').Select
ActiveWorkbook.Names.Add Name:='ColRefonte' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C16,,,COUNTA(' & mois & '!C16)-1)'
Columns('Q:Q').Select
ActiveWorkbook.Names.Add Name:='ColModifBDE1E4' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C17,,,COUNTA(' & mois & '!C17)-1)'
Columns('R:R').Select
ActiveWorkbook.Names.Add Name:='ColModifBDE4' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C18,,,COUNTA(' & mois & '!C18)-1)'
Columns('S:S').Select
ActiveWorkbook.Names.Add Name:='ColPanne' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C19,,,COUNTA(' & mois & '!C19)-1)'
Columns('U:U').Select
ActiveWorkbook.Names.Add Name:='ColE1' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C21,,,COUNTA(' & mois & '!C21)-1)'
Columns('V:V').Select
ActiveWorkbook.Names.Add Name:='ColE2' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C22,,,COUNTA(' & mois & '!C22)-1)'
Columns('W:W').Select
ActiveWorkbook.Names.Add Name:='ColE3' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C23,,,COUNTA(' & mois & '!C23)-1)'
Columns('X:X').Select
ActiveWorkbook.Names.Add Name:='ColE4' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C24,,,COUNTA(' & mois & '!C24)-1)'
Columns('AB:AB').Select
ActiveWorkbook.Names.Add Name:='ColE5' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C28,,,COUNTA(' & mois & '!C28)-1)'
Columns('AD:AD').Select
ActiveWorkbook.Names.Add Name:='ColE6' & mois, RefersToR1C1:='=OFFSET(' & mois & '!R4C30,,,COUNTA(' & mois & '!C30)-1)'
Range('A1').Select
End Sub

merci @+tard
 

coco_lapin

XLDnaute Impliqué
Bonjour Porcinet82, rudymagny et le forum.

Moi, j'utilise les cellules nommées dans toutes mes applications. Ainsi l'ajout de colonnes ou lignes est complètement transparent.

Le lien ci-dessous est une réponse à une question similaire.

Ce lien n'existe plus
 

Discussions similaires

Réponses
3
Affichages
214

Statistiques des forums

Discussions
312 451
Messages
2 088 517
Membres
103 874
dernier inscrit
baraki