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

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:

Dranreb

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

Comprend rien.
Pouviez laisser comme c'était le reste de l'utilisation de l'objet feuille du bloc With !
Juste ActiveWorkbook.Names.Add au lieu de .Names.Add !
Il fallait juste ça :
ActiveWorkbook.Names.Add Name:="Categories", etc. (Nom sans préfixe ajouté au classeur) et non ça:
.Names.Add Name:="Categories", etc. (Nom sans préfixe mais ajouté au niveau feuille du bloc With) ni ça:
ActiveWorkbook.Names.Add Name:="'Import Hosting'!Categories", etc. (Ajout niveau classeur mais d'un nom avec préfixe de feuille comme à votre post #3).
À +
 
Dernière édition:

Profane

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

effectivement cela fonctionne, mais il faut rajouter en debut de code
Sheets("Import_Hosting").Activate
car sinon il crée les références par rapport à la page active (qui n'est pas forcément Import_Hosting)
@+
 

Dranreb

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

Pas si vous remettez le With Sheets("Import Hosting") et les .Cells
Je ne vous ai jamais dit d'enlever ça, que vous avez confondu avec ce que j'appelais le préfixe de feuille du nom, mais juste de ne pas l'utiliser pour .Name.Add
 

Dranreb

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

Il n'y a absolument aucune raison pour que ce code impose une feuille active particulière, seul le classeur actif doit être le bon.
VB:
Sub Nommer_plageCategorie()
Dim i As Long
With ActiveWorkbook.Worksheets("Import Hosting")
   For i = 1 To 26
      If .Cells(1, i).Value Like "Service Type*" Then
         .Cells(1, i).Value = "Category"
         ActiveWorkbook.Names.Add Name:="Categories", RefersToR1C1:="=OFFSET('Import Hosting'!R2C" & i & ",,,COUNTA('Import Hosting'!C" & i & ")-1)"
         Exit Sub
         End If
      Next i
   End With
End Sub
 

Dranreb

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

Ce n'est pas possible.
Joignez votre classeur que j'examine ça.

P.S. Remarque: si le nom préexistait au niveau de la feuille accueil suite à une fausse manœuvre, l'exécution de la macro ne le supprime pas, elle ajoute le même nom, mais au niveau classeur cette fois...
À +
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 136
Membres
104 043
dernier inscrit
SpideyCodeWarrior