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
 

Dranreb

XLDnaute Barbatruc
Si ce n'est pas le cas ce serait peut être préférable de modifier les formules par VBA. mais dans ce cas ce serait plus facile si c'était cette fois la la plage de Suivi Chantier qui était mise sous forme de tableau.
Dans 'Ligne' est-ce qu'on ne pourrait pas mettre plutôt le numéro de poste dans le DPFG, trouvé au moyen de la fonction EQUIV($B12;… ? Ça permettrait de ne le chercher qu'une fois au lieu de 4.
 

Steph01300

XLDnaute Nouveau
Pour votre question
Oui mais si la plage commence à une cellule d'une autre colonne, elle sera quand même suivie dans le même ordre des colonnes Désignation, U, Qté … non ?
Non effectivement comme je ne suis pas à l'origine de la feuille DPGF l'ordre n'est pas forcement le même et d'autre colonne que ne me sont pas utiles peuvent même s’insérer dans le tableau. C'est pourquoi actuellement je saisi dans la feuille suivi chantier les index des colonnes dont j'ai besoin.
C'est cette saisie manuelle que je cherche à éviter.
Je vais tenter la solution que vous proposez dans le dernier post. Sinon je resterai à la saisie manuelle.
 

Dranreb

XLDnaute Barbatruc
Si au moins les titres étaient fiables (doutes), on pourrait à la rigueur mettre en 'Suivi Chantier'!J2, à propager sur 4 lignes :
Code:
=EQUIV(DECALER($C$11;0;LIGNE()-2);DPGF!A$10:F$10;0)
quitte à remplacer l'expression par un nom supplémentaire issu de la même saisie.
Mais quid d'une U qui n'y figurerait pas parce que ce serait partout la même ?
 

Steph01300

XLDnaute Nouveau
Super ça fonctionne.
J'ai modifié la macro pour donner un nom à la barre de titres et utilisé votre formule pour les numéros de colonnes. (je ne la maitrise pas du tout mais je vais bosser dessus)
Il faut juste que les noms du titre correspondent entre les 2 feuilles mais ça, je peux faire des saisies manuelles.
Je vous joins le fichier pour votre avis
Merci beaucoup de votre aide.
 

Pièces jointes

  • Essai Macro.zip
    200.8 KB · Affichages: 8

Dranreb

XLDnaute Barbatruc
J'ai dit "un nom supplémentaire issu de la même saisie.". Je pensais plutôt à ça :
VB:
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)
   Plage.Name = "Matrice_DP"
   Plage.Rows(0).Name = "Titre"
   End Sub
 

Dranreb

XLDnaute Barbatruc
Je dirais Excel Downloads
Ce site en somme. Vous pouvez toujours poser une question précise pour savoir un truc.
L'explorateur d'objets (touche F2 dans VBE) peut aussi vous enseigner tout ce que vous pouvez combiner derrière une expression objet suivie d'un point. Mais ça dit seulement que ça y est attaché, pas ce que c'est. Pour ça la touche F1 aboutit parfois à une explication sur internet.
Une instruction MsgBox TypeName(expression) peut vous apprendre de quel type est l'expression, pour pouvoir retrouver ce type dans l'explorateur d'objets, si toutefois c'est bien une classe.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502