Bonjour.
Je suis tout nouveau sur ce site et avec très peu d'expérience dans la programmation VBA.
Je dois faire une recherchev sur une plage de cellules de dimension variable.
Mon idée est de donner un nom à cette plage et d'utiliser ce nom dans la formule RECHERCHEV.
Comme le nom de la feuille ou j'ai cette plage de cellules change, je pensais créer une macro avec une UserForm qui me permet de sélectionner la plage dans la feuille et de lui affecter le nom qui est utilisé dans ma formule.
J'espère que je suis assez clair.
Est ce que vous pouvez m'aider.
Bonne journée
Bonjour,
J'avoue que je ne comprend par cette manip.
La plage est un tableau mais qui n'est pas toujours sur la même feuille du classeur et je ne sais pas à quoi correspond une référence structurée
Bien cordialement
Bonjour.
C'est une expression de la forme NomDuTableau[TitreDeLaColonne] pour désigner une colonne d'un tableau, c'est à dire d'une plage à laquelle on a appliqué la commande "Mettre sous forme de tableau" du groupe Styles, menu Accueil.
Bonjour
J'ai avancé sur mon problème avec cette macro
Sub Plage_DPGF()
'Selection de la Plage du DPGF pour lui donner un nom
'Permet de remplir Suivi Chantier
'
Dim Plage As Range
Set Plage = Application.InputBox(prompt:="Selectionner Plage DP", Type:=8)
ActiveWorkbook.Names.Add Name:="Matrice_DP", RefersToR1C1:=Plage
ActiveWorkbook.Names("Matrice_DP").Comment = ""
End Sub
Elle fonctionne sans erreur, par contre il y a une différence dans le gestionnaire de nom entre le un nom crée par la macro (Matrice_DP) et le nom en passant directement par sa création par le gestionnaire.
Je pense que c'est la cause de ça que la formule =SI(B12="";"";RECHERCHEV(B12;Matrice_DP;$J$2;0)) renvoi #NOM?
C'est un tableau excel, mais comme il vient de l'extérieur et que je maitrise pas son format, je rempli les cellules et ensuite ce tableau me sert des données de ce tableau pour remplir une autre feuille de calcul en allant rechercher des données. En affectant un nom à ce tableau, cela m'évite de changer à chaque fois les variables dans ma formule recherchev.
Bonjour.
Joignez enfin votre fichier.
Je ne sais rien de la façon dont ces données arrivent de l'exterieur, et la conversion en tableau peut aussi tout à fait se faire par macro. Ou on peut copier des données d'une autre source dans un tableau existant en rectifient sa taille.
Voila le fichier.
Comme je le disais dans mon post précédent la feuille DPGF est créée en amont pas un organisme externe et n'est pas toujours formatée pareil. je dois récupérer dans le tableau suivi de chantier certaine données en indiquant les colonnes de recherche. Dans un 2ème temps je vais tenter une macro qui me donne l'index de ces colonnes.
Merci pour votre aide
Je pense que votre façon de créer le nom par ActiveWorkbook.Names.Add Name:="Matrice_DP", RefersToR1C1:=Plage n'est pas correcte.
Avec cette syntaxe de base il faudrait plutôt :
Désolé du temps mis a vous répondre. Je viens juste ce matin d'essayer vos propositions
Sub Plage_DPGF()
'Selection de la Plage du DPGF pour lui donner un nom
'Permet de remplir Suivi Chantier
Dim Plage As Range
Set Plage = Application.InputBox(prompt:="Selectionner Plage DPGF", Type:=8)
Plage.Name = "DPGF"
End Sub
Malheureusement non car la référence de la colonne n'est jamais la même.
Il faudrait, quand j'ai saisi la plage avec la macro, que je récupère la 1ère référence de la plage et m'en servir comme référence dans la formule COLONNE()
Je ne comprends pas. Avec RECHERCHEV c'est toujours un nombre de colonnes relatif à la 1ère quelle qu'elle soit. Avec COLONNE()-DécalageApproprie il est seulement déterminé en fonction de la colonne qui porte la formule.
Sur le fichier que j'ai envoyé dans la feuille DPGF la colonne "Art" est la colonne A mais dans la pratique elle peut être placée n'importe ou dans la feuille et c'est la saisie de la plage sur laquelle je voudrai récupérer l'index de la 1ere colonne de la plage