Bonjour,
je suis en train d'automatiser un plan de formation sous excel 2010.
J'ai une feuille qui contient en colonne A le nom de la formation, en colonne B la date de début de la session 1, en colonne C la date de début de la session 2, etc...
Je cherche à faire une macro qui crée automatiquement, dans le gestionnaire de noms, des plages associant, pour chaque ligne n, le contenu de la colonne A et comme zone les cellules où une date de session est renseignée.
J'ai testé deux solutions avec une boucle For...Next, qui n'ont pas fonctionné.
La première en utilisant . Select
Ca ne fonctionne pas, le déboggage me renvoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Static Sub nom_plage() Application.ScreenUpdating = False 'rend invisible la mise à jour de la macro Dim nb_lignes_formations As Integer, nb_colonnes_formations As Integer, num_ligne As Integer, num_colonne As Integer, nom_formation As String Sheets("données début stages").Activate 'active la feuille "données début stages" nb_lignes_formations = WorksheetFunction.CountA(Range("A:A")) 'décompte nb lignes formation nb_colonnes_formations = WorksheetFunction.CountA(Range("1:1")) 'décompte nb colonnes formation Range(Cells(1, 1), Cells(nb_lignes_formations, nb_colonnes_formations)).Activate 'activer la zone de saisie des données formation For num_ligne = 2 To nb_lignes_formations nom_formation = Cells(num_ligne, 1) Range(Cells(num_ligne, 2), Cells(num_ligne, nb_colonnes_formations)).Select ActiveWorkbook.Names.Add Name:=nom_formation, RefersTo:=Selection Next End Sub
erreur 1004: le nom entré n'est pas valide.
Raisons possibles:
-le nom ne commence pas par une lettre ou un trait de soulignement
-le nom contient un espace ou un autre caractère non valide
-le nom est en conflit avec un nom prédéfini dans excel ou le
et me surligne en jaune la ligne: ActiveWorkbook.Names.Add Name:=nom_formation, RefersTo:=Selection
Avez-vous une idée de mon erreur?
j'ai testé une autre solution en utilisant l'adresse de la zone en format R1C1.
Cette solution ne fonctionne pas non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Static Sub nom_plage() Application.ScreenUpdating = False Dim nb_lignes_formations As Integer, nb_colonnes_formations As Integer, num_ligne As Integer, num_colonne As Integer Dim nom_formation As String Dim adresse1 As String Sheets("données début stages").Activate 'active la feuille "données début stages" nb_lignes_formations = WorksheetFunction.CountA(Range("A:A")) 'décompte nb lignes formation nb_colonnes_formations = WorksheetFunction.CountA(Range("1:1")) 'décompte nb colonnes formation Range(Cells(1, 1), Cells(nb_lignes_formations, nb_colonnes_formations)).Activate For num_ligne = 2 To nb_lignes_formations nom_formation = Cells(num_ligne, 1) Range(Cells(num_ligne, 2), Cells(num_ligne, nb_colonnes_formations)).Select adresse1 = Range(Cells(num_ligne, 2), Cells(num_ligne, nb_colonnes_formations)).Address(ReferenceStyle:=xlR1C1) MsgBox Var1 & " " & adresse1 ActiveWorkbook.Names.Add Name:=nom_formation, RefersToR1C1:="=adresse1" 'ActiveWorkbook.Names.Add Name:=nom_formation, RefersToR1C1:="=données début stages!R1C1:R2C2" 'ActiveWorkbook.Names("Var1").RefersToR1C1 = "nom_formation Next End Sub
La macro tourne sur la première ligne de formation en m'affichant le bon nom de formation et la bonne zone dans le Msgbox. Par contre, dans le gestionnaire de noms, le premier nom de formation est le bon mais la zone indique: fait référence : =adresse1
Le Msgbox de la seconde ligne de formation est également correct mais immédiatement après j'ai le message d'erreur suivant du déboggae :
erreur 1004: le nom entré n'est pas valide.
Raisons possibles:
-le nom ne commence pas par une lettre ou un trait de soulignement
-le nom contient un espace ou un autre caractère non valide
-le nom est en conflit avec un nom prédéfini dans excel ou le
et me surligne en jaune la ligne: ActiveWorkbook.Names.Add Name:=nom_formation, RefersToR1C1:="=adresse1"
merci pour vos lumières sur mes erreurs de code,
bonne soirée
Partager