VBA Vérifier si cellules correspondent à un critère et nommer la plage en conséquence

  • Initiateur de la discussion Initiateur de la discussion val89
  • 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 !

val89

XLDnaute Nouveau
Bonjour,
Je dispose d'une grande base de données qui pourra être assimilée à l'exemple que j'ai joint.
Je souhaiterais créer un onglet avec des listes déroulantes en cascade qui à termes me permettront de naviguer ainsi :
- Je souhaite un tube je choisis "Tube" dans la première liste déroulante
- Puis "diamètre 16" dans la deuxième liste
- Puis "acier" dans la troisième etc ...
Afin que cela me propose une référence disponible dans ma base de données.

Je dois donc créer des noms pour chaque groupe de cellules qui me seront proposés à chaque choix dans une liste déroulante. Par exemple si je choisis "Tube" je n'aurais en choix que 15 et 16 en dimension (ref pièce jointe).
Mais la base de données étant immense et sera amenée à évoluer. Je ne peux pas rentrer les noms un par un. Cela me prendra beaucoup trop de temps. D'où la nécessité d'une macro.
Pour mon exemple :
- je voudrais que de la cellule A2 à A6, les cellules se nomment "Catégories"
- que les cellules de B2 à B4 se nomment "Tube" puisque "Tube" est écrit à côté
- que les cellules C3 et C4 se nomment "Tube_15" puisque "Tube" et "15" sont notés à côté.

Voici mon problème :
J'ai commencé à développer ça petit à petit et j'en suis la :

Dim I As Byte
Dim J As Long

With ActiveWorkbook
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column 'Incrémente les colonnes'
For J = 2 To Range("A" & Rows.Count).End(xlUp).Row 'Incrémente les lignes'
On Error Resume Next
.Names.Delete 'On supprime le nom original de la cellule'
On Error GoTo 0
If I = 1 Then 'Pour la première colonne fonctionne différement'
.Names.Add Name:=Cells(1, I), RefersToR1C1:="=R" & J & "C" & I
Else
.Names.Add Name:=Cells(1, I) & "_" & Cells(J, I - 1), RefersToR1C1:="=R" & J & "C" & I
End If
Next J
Next I
End With
End Sub

C'est juste le début mais je voudrais que le code analyse toutes les cellules ayant le mot "Tube" à coter et ainsi nommer l'ensemble de ces cellules d'un coup.

J'espère avoir été clair.
Merci d'avance
 

Pièces jointes

Dernière modification par un modérateur:
Re : VBA Vérifier si cellules correspondent à un critère et nommer la plage en conséq

Bonjour val89 et bienvenue,

Tu ne prendrais pas deux minutes pour nous expliquer le contexte? Pourquoi une macro? Tes catégories en Feuil1 seront toujors regroupées (comme dans ton exemple)? Le nombre d'items va varier dans le temps ou rester stable? etc.
 
Re : VBA Vérifier si cellules correspondent à un critère et nommer la plage en conséq

Re-bonjour,

Une proposition sans doute un peu différente de ce que tu avais en tête:
- 4 plages nommées "dynamiquement" (voir Formules > Gestionnaire de noms) existent en Feuil1, colonnes J à M. Elles seront garnies en fonction des choix successifs et seront les sources des Validations.
- dans la feuil2, lorsqu'on active une cellule de la plage C2:C10, la plage nommée CAT est garnie
- lorsque la valeur des colonnes C à F (lignes 2 à 10) est modifiée, la plage nommée correspondant à la colonne voisine est garnie.

Tu aurais pu prévoir quelques cas de figure supplémentaires (avec toujours le même fournisseur, on teste difficilement 🙄)

Fais donc quelques tests avec ton exemple comme base de travail, ajoutes-y ensuite de données supplémentaires progressivement, pour vérifier que le comportement est toujours celui que tu avais imaginé!?
 

Pièces jointes

- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
80
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
252
Retour