Bonjour à tous,
Après avoir parcouru mon ami google et les forums excel download je ne trouve malheureusement pas de solution à mon problème.
Je souhaiterai, par le biais d'une macro, automatiser la tâche "définir nom de plage" pour plusieurs colonnes.
Je m'explique, sur une bdd (cf fichier joint), comportant plusieurs colonnes (dans mon fichiers définitif, près de 80 ), je dois définir le nom de TOUTES les colonnes via la fonction:
=DECALER('BDD clients'!$B$1;1;0;NBVAL('BDD clients'!$A:$A)-1;1).
Travail très long et très laborieux qui inévitablement comportera très probablement des erreurs de saisies de ma part...
Ma question est donc simple (à poser), mais à résoudre, j'avoue que je sèche...
Clairement, je souhaite créer une macro qui automatisera cette tâche de "définir un nom" sur toutes mes colonnes, cette macro devant utiliser la fonction "décaler" comme indiquée plus haut... car le nombre de lignes de ma bdd augmentera au fur et à mesure, raison pour laquelle mes plages doivent comptabiliser toutes les lignes des colonnes nommées)
Point important, cette macro doit également se nommer automatiquement en reprenant l'entête correspondante...
En bref, une macro qui fait tout... lol
J'ai bien trouver sur le forum, une macro s'approchant de celà,
Sub déf_nom()
Dim Var As Range, i As Integer, NomZone As String
On Error Resume Next
Set Var = Application.InputBox("Sélectionner votre zone: (Ex. A1:B10) ", _
"Sélection de zone ", Default:="$A$1", Type:=8)
On Error GoTo 0
If Not Var Is Nothing Then
MsgBox Var.Address
Var.Select
Else
Exit Sub
End If
NomZone = InputBox("Entrer le Nom de la plage", "Nommer la plage :")
If NomZone <> "" Then
ActiveWorkbook.Names.Add Name:=NomZone, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Address
If Var.Columns.Count = 1 Then Exit Sub
For i = 1 To Var.Columns.Count
ActiveWorkbook.Names.Add Name:=NomZone & "Col" & i, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Columns(i).Address
Next
Else
Exit Sub
End If
End Sub
Malheureusement elle ne prend pas en compte la fameuse fonction "decaler", que je souhaite, et de plus n'automatise pas non plus le nom de la plage avec l'entête correspondante...
J'avoue être tout à fait novice dans la programmation de macros...
Espérant avoir été clair.
Merci beaucoup pour votre aide.
Cordialement.
Après avoir parcouru mon ami google et les forums excel download je ne trouve malheureusement pas de solution à mon problème.
Je souhaiterai, par le biais d'une macro, automatiser la tâche "définir nom de plage" pour plusieurs colonnes.
Je m'explique, sur une bdd (cf fichier joint), comportant plusieurs colonnes (dans mon fichiers définitif, près de 80 ), je dois définir le nom de TOUTES les colonnes via la fonction:
=DECALER('BDD clients'!$B$1;1;0;NBVAL('BDD clients'!$A:$A)-1;1).
Travail très long et très laborieux qui inévitablement comportera très probablement des erreurs de saisies de ma part...
Ma question est donc simple (à poser), mais à résoudre, j'avoue que je sèche...
Clairement, je souhaite créer une macro qui automatisera cette tâche de "définir un nom" sur toutes mes colonnes, cette macro devant utiliser la fonction "décaler" comme indiquée plus haut... car le nombre de lignes de ma bdd augmentera au fur et à mesure, raison pour laquelle mes plages doivent comptabiliser toutes les lignes des colonnes nommées)
Point important, cette macro doit également se nommer automatiquement en reprenant l'entête correspondante...
En bref, une macro qui fait tout... lol
J'ai bien trouver sur le forum, une macro s'approchant de celà,
Sub déf_nom()
Dim Var As Range, i As Integer, NomZone As String
On Error Resume Next
Set Var = Application.InputBox("Sélectionner votre zone: (Ex. A1:B10) ", _
"Sélection de zone ", Default:="$A$1", Type:=8)
On Error GoTo 0
If Not Var Is Nothing Then
MsgBox Var.Address
Var.Select
Else
Exit Sub
End If
NomZone = InputBox("Entrer le Nom de la plage", "Nommer la plage :")
If NomZone <> "" Then
ActiveWorkbook.Names.Add Name:=NomZone, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Address
If Var.Columns.Count = 1 Then Exit Sub
For i = 1 To Var.Columns.Count
ActiveWorkbook.Names.Add Name:=NomZone & "Col" & i, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Columns(i).Address
Next
Else
Exit Sub
End If
End Sub
Malheureusement elle ne prend pas en compte la fameuse fonction "decaler", que je souhaite, et de plus n'automatise pas non plus le nom de la plage avec l'entête correspondante...
J'avoue être tout à fait novice dans la programmation de macros...
Espérant avoir été clair.
Merci beaucoup pour votre aide.
Cordialement.