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

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
Ca ne fonctionne pas, le déboggage me renvoie

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.

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
Cette solution ne fonctionne pas non plus.
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