Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Gestionnaire de nom :colonne en fonction d'une valeur trouvée

  • Initiateur de la discussion Initiateur de la discussion Profane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Profane

XLDnaute Occasionnel
Bonjour a tous,
je me promene pour l'instant dans la région des boucles...vaste région
je crée en ce moment une routine permettant d'importer des fichiers et de les mettre en forme (nombre de colonnes différentes a chaque fois)
je cherche via la macro un nom de colonne par son contenu et une fois trouvé, je le renomme -> OK
par contre je voudrais bien le declarer en même temps via VBA sous le gestionnaire de noms --> la ça coince
voici mon probléme du jour et la macro qui l'accompagne :
Code:
Sub Nommer_plageCategorie()
Dim i As Integer
With Sheets("Import Hosting")
For i = 1 To 26
If .Cells(1, i) = "Service Type*" Then
.Cells(1, i) = "Category"
ActiveWorkbook.Names.Add Name:="=DECALER(Import Hosting!$F$2;;;NBVAL(Import Hosting!$F:$F)-1)"
'$F$2 devant être remplacé par la valeur cells(2,i) et $F:$F par la valeur columns(I)
Exit For
End If
Next i
End With
End Sub
merci a tous pour votre aide
 
Dernière édition:
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour.
Vous n'avez spécifié aucun des 4 paramètres possibles commençant par RefersTo (1 des 4 est obligatoire), et vous avez spécifié comme paramètre Name un nom incorrect, qui pourrait d'ailleurs peut être convenir comme valeur de RefersToLocal
Cordialement.
 
Dernière édition:
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour Dranreb
oui effectivement, la syntaxe n'est pas des plus juste j'aurai du écrire
Code:
ActiveWorkbook.Names.Add Name:="Import Hosting!Categories", RefersTo:="=DECALER(Import Hosting!$F$2;;;NBVAL(Import Hosting!$F:$F)-1)"
mais cela ne solutionne pas le changement de variable....
une idée ?
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour
Toujours pas bon : nom de feuille muni d'un espace qui impose d’être encadrée d'apostrophes aussi bien dans le nom que dans la formule et valeur pour paramètre RefersToLocal atribuée à RefersTo.
Mon conseil: attribuer une formule en notation A1 natif à RefersTo ou en notation R1C1 à RefersToR1C1 plutot qu'une formule en A1 local à RefersToLocal ou en L1C1 à RefersToR1C1Local. Les 4 marchent mais le local est moins portable.
Pour ne pas se tromper le mieux c'est d'enregistrer une nouvelle macro, et créer le nom à la main pendant que ça enregistre, puis de copier l'instruction engendrée, comme ça le local (français avec ";") est automatiquement converti en natif (anglais avec ",").
Cordialement
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour
Ce que Dranreb te dit c'est :

1) tu lances l'enregistreur de macros
2) tu ouvres la fenêtre de dialogue du gestionnaire de noms et tu définis ton nom en tapant la formule decaler
3) tu arrêtes l'enregistreur de macros
4) tu lis dans l'editeur la bonne syntaxe.
5) tu récupères ce bout de code et tu le colles dans ta macro
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour Misange
ca j avais compris, mais ce qui m interesse c est de generer la formule du decaler avec les valeurs cell correspondant à la bonne colonne trouvé (voir macro)
et via l enregistreur ca ne donne rien qui puisse m orienter dans ce sens
les valeur a implémenter dans la formule décaler sont : $F$2 devant être remplacé par la valeur cells(2,i) et $F:$F par la valeur columns(I)
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour.
Essayez comme ça:
VB:
.Names.Add Name:="Categories", RefersToR1C1:="=OFFSET('Import Hosting'!R2C" & i & ",,,COUNTA('Import Hosting'!C" & i & ")-1)"
À +
 
Dernière édition:
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Merci Dranreb, cela fonctionne parfaitement ;-)
pourriez vous m'expliquez la syntaxe afin que je progresse notamment les R2C et C ?
merci pour votre aide
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Cette syntaxe construit tout simplement une formule en style R1C1 par concaténation aux bons endroit du numéro de colonne
S'il n'y avait pas cette concaténation, i valant toujours 6, voici les 4 façons d'écrire la même chose:
RefersToLocal:="=DECALER('Import Hosting'!$F$2;;;NBVAL('Import Hosting'!$F:$F)-1)"
RefersTo:="=OFFSET('Import Hosting'!$F$2,,,COUNTA('Import Hosting'!$F:$F)-1)"
RefersToR1C1:="=OFFSET('Import Hosting'!R2C6,,,COUNTA('Import Hosting'!C6)-1)"
RefersToR1C1Local:="=DECALER('Import Hosting'!L2C6;;;NBVAL('Import Hosting'!C6)-1)"
Mais encore une fois, le local est à éviter, il ne marcherait plus sur une machine équipée d'un Excel en anglais.
À +
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour
un oubli de ma part, mais ainsi le gestionnaire de noms et notamment la zone fait référence à la page "import Hosting" et pas au classeur, ce qui me pose comme soucis que je ne peux appeller d'une autre feuille la référence ainsi crée
Y a t il moyen de spécifier l'étendue (classeur) par macro lors de la création ?
car aprés cela n'est plus possible une fois crée...
merci d'avance
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour.
Oui, j'avais vu, et cru que c'était fait exprès. Ajouter à la feuille le nom dépourvu de préfixe de feuille a le même effet que de l'ajouter au classeur préfixé de la feuille, comme vous sembliez le vouloir au #3. Notez qu'on peut quand même l'appeler d'une autre feuille en respécifiant ce préfixe. Mais c'est sûr que si ce nom est unique dans tout le classeur, ajoutez l'y sans préfixe.
Cordialement.
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

Bonjour Dranreb, le forum
en fait si j'enleve le préfixe (with sheets("Import Hosting"), la boucle ne fonctionne plus
dans l'absolue j ai repris la formule sans le with et sans les valeurs récupérées par la boucle et effectivement cela fonctionne avec la bonne étendue ("classeur")
seul soucis , c'est comment récuperer la valeur de cell (I,1)...
 
Re : Gestionnaire de nom :colonne en fonction d'une valeur trouvée

j ai repondu trop vite
donc voici le code corrigé
Code:
Sub Nommer_plageImp()
Dim i As Integer
'With Sheets("Import_Hosting")
For i = 1 To 26
    If Sheets("Import_Hosting").Cells(1, i) = "Service Type*" Then
    Sheets("Import_Hosting").Cells(1, i) = "Category"
    ActiveWorkbook.Names.Add Name:="Categories", RefersToR1C1:="=OFFSET(Import_Hosting!R2C" & i & ",,,COUNTA(Import_Hosting!C" & i & ")-1)"
.....................
.............................
et cela fonctionne, j avais peur qu en respécifiant a chaque fois le préfixe Sheets("Import_Hosting")...que ca ralentisse la macro, mais non ;-)
Merci Dranreb ;-)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
676
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…