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

XL 2016 (RESOLU) - Récupération d'une plage de données d'un UserForm pour lui affecter un nom

Steph01300

XLDnaute Nouveau
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
 

Steph01300

XLDnaute Nouveau
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
 

Dranreb

XLDnaute Barbatruc
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.
 

Steph01300

XLDnaute Nouveau
Bonjour
J'ai avancé sur mon problème avec cette macro


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?



Pouvez vous m'aider
Merci d'avance
 

Steph01300

XLDnaute Nouveau
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.
 

Dranreb

XLDnaute Barbatruc
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.
 

Steph01300

XLDnaute Nouveau
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
 

Pièces jointes

  • Essai Macro 11.zip
    163.8 KB · Affichages: 14

Dranreb

XLDnaute Barbatruc
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 :
VB:
ThisWorkbook.Names.Add Name:="Matrice_DP", RefersToR1C1:="=" & Plage.Address(True, True, xlR1C1, True)
Mais le plus simple devrait marcher aussi :
VB:
Plage.Name = "Matrice_DP"
 

Steph01300

XLDnaute Nouveau
Bonjour Dranreb

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

ça fonctionne parfaitement

Il me reste à trouver comment faire pour que le n° index de la colonne soit mis automatiquement dans ma formule rechercheV. Je m'y attèle.

Merci beaucoup et bonne continuation
 

Steph01300

XLDnaute Nouveau
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()
 

Dranreb

XLDnaute Barbatruc
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.
 
Dernière édition:

Steph01300

XLDnaute Nouveau
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…