Déclaration de variables selon une liste de choix
Bonsoir à tous et toutes,
Je dois proposer un projet dans lequel il me faudra déclarer x variables public selon une liste de choix contenue dans une combobox d'un userform..
De plus ces variables ainsi crées seront supprimées par les différents acteurs par une validation de contenu que j'imposerai.
Est-il possible de le faire ?
Comment puis-je donc procéder ?
Je me tiens à votre disposition pour vous fournir de plus amples informations si nécessaires.
Amitié
Air_2
Salut Air_2 et le forum
C'est possible, mais pourquoi faire ? Si c'est une variable, le nom n'est utilisable que par le code, alors quel besoin d'avoir des noms différents ?Est-il possible de le faire ?
Petites remarques :
- Ce qui est utile dans le code, n'est pas visible par les utilisateurs. Ce qui fait que le nom d'une variable importe peu... sauf au programmeur !
- Quand on demande de l'aide, c'est pour résoudre un problème. Pas pour monter une usine à gaz !
Explique ton problème et ont'aidera à trouver une solution réelle.
A+
Bonsoir Gorfael,
Je partage ton point de vue, mais c'est un projet assez urgent et d'habitude je ne suis aussi pressé mais le temps hélas oui.
Effectivement, j'ai trouvé une autre alternative (Au lieu de déclarer des variables, je les stocke dans un tableau.
) laquelle hélas, je ne maîtrise pas encore.
Je laisse ce post ouvert le temps d'obtenir une formation des maîtres qui officient sur le site :
Vous trouverez le code en attente d'amélioration ci-après :
Sub toto()
With F1
ReDim MaSelection(31)
MaSelection(1) = "230"
MaSelection(2) = "1176"
MaSelection(3) = "1179"
MaSelection(4) = "1501"
MaSelection(5) = "1603"
MaSelection(6) = "1901"
MaSelection(7) = "1919"
MaSelection(8) = "1920"
MaSelection(9) = "3060"
MaSelection(10) = "3069"
MaSelection(11) = "4560"
MaSelection(12) = "4565"
MaSelection(13) = "5003"
MaSelection(14) = "5004"
MaSelection(15) = "5012"
MaSelection(16) = "5022"
MaSelection(17) = "5025"
MaSelection(18) = "5027"
MaSelection(19) = "5029"
MaSelection(20) = "5101"
MaSelection(21) = "5311"
MaSelection(22) = "5660"
MaSelection(23) = "5665"
MaSelection(24) = "7013"
MaSelection(25) = "7015"
MaSelection(26) = "7019"
MaSelection(27) = "7062"
MaSelection(28) = "7139"
MaSelection(29) = "7140"
MaSelection(30) = "7141"
MaSelection(31) = "7457"
Dim i As Integer
For i = 1 To 31
LigneFin2 = F7.Range("a65536").End(xlUp).Offset(1, 0).Row
If .AutoFilterMode = True Then
.AutoFilterMode = False
Else
.Range("a9:o9").AutoFilter
End If
.Range("A9").AutoFilter Field:=10, Criteria1:=Array(MaSelection(i)), Operator:=xlFilterValues
LigneFin = .Range("o65536").End(xlUp).Row
.Range(.Range("a10"), .Cells(LigneFin, 15)).Select
If Selection.row< 10 Then
Else
Selection.SpecialCells(xlCellTypeVisible).Copy F7.Cells(LigneFin2, 1)
End If
Next
End With
End Sub
Je vous remercie pour le temps que vous voudriez bien m'accorder pour parfaire ce code et mes connaissance, je vous en serais redevable.
Amitié
Air_2
Salut le forum
Pour la déclaration de ton tableau (Retourne un Tablo de base 0)
Dim Tablo, I As Byte
Tablo = Array("230", "1176", "1179", "1501", "1603", "1901", "1919", "1920", "3060", "3069", _
"4560", "4565", "5003", "5004", "5012", "5022", "5025", "5027", "5029", "5101", _
"5311", "5660", "5665", "7013", "7015", "7019", "7062", "7139", "7140", "7141", "7457")
For I = LBound(Tablo) To UBound(Tablo)
MsgBox I & " " & Tablo(I)
Next I
Si tu veux un Tablo de base 1, insère en tête du module
Option Base 1
Mytå
Bonsoir Mytå,
GRAND MERCI,
La seule ligne que je n'ai pas intégrée étant la ligne :
Option Base 1
Je ne suis pas encore super à l'aise avec ces options comme par exemple :
Option Explicit
Le code faisant suite à ton expertise devient plus lisible et plus facile pour moi par la suite de mettre à jour plus rapidement.
Sub toto()
With F1
ReDim MaSelection(31)
Dim MaSelection, I As Integer
MaSelection= Array("230", "1176", "1179", "1501", "1603", "1901", "1919", "1920", "3060", "3069", _
"4560", "4565", "5003", "5004", "5012", "5022", "5025", "5027", "5029", "5101", _
"5311", "5660", "5665", "7013", "7015", "7019", "7062", "7139", "7140", "7141", "7457")
For I = LBound(Tablo) To UBound(Tablo)
MsgBox I & " Vous intégrer la rubrique suivante " & MaSelection(I)
If .AutoFilterMode = True Then
.AutoFilterMode = False
Else
.Range("a9:o9").AutoFilter
End If
.Range("A9").AutoFilter Field:=10, Criteria1:=Array(MaSelection(I)), Operator:=xlFilterValues
LigneFin = .Range("o65536").End(xlUp).Row
.Range(.Range("a10"), .Cells(LigneFin, 15)).Select
If Selection.row< 10 Then
Else
LigneFin2 = F7.Range("a65536").End(xlUp).Offset(1, 0).Row
Selection.SpecialCells(xlCellTypeVisible).Copy F7.Cells(LigneFin2, 1)
End If
Next
If .AutoFilterMode = True Then
.AutoFilterMode = False
Else
.Range("a9:o9").AutoFilter
End If
End With
End Sub
Encore une fois GRAND MERCI pour m'avoir transmis un peu de ton savoir
Amitié
Air_2