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

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

  • Book1.xlsx
    8.7 KB · Affichages: 40
  • Book1.xlsx
    8.7 KB · Affichages: 35
Dernière modification par un modérateur:

Modeste

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

Modeste

XLDnaute Barbatruc
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 :rolleyes:)

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

  • Validations en cascade (val89).xlsm
    23.2 KB · Affichages: 34

Discussions similaires

Réponses
4
Affichages
419

Statistiques des forums

Discussions
314 654
Messages
2 111 598
Membres
111 215
dernier inscrit
fateh