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
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: