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

Est-il possible de le faire ?

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 ?

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 !
Tu ne peux faire des hypothèses pour tes algorythmes qu'avec tes connaissances du moment. Tu as trouvé une solution plus ou moins. Et donc tu cherches à ce que cette solution fonctionne (donc ton histoire de liste de déclarations). Mais il y a sans doute un tas de moyens de résoudre ton problème de manières plus ou moins efficaces... à condition de connaître le vrai problème.

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

Re le forum

Bien heureux que ton problème soit solutionné.

Mais il ne faut pas oublier de le faire passer en [Résolu]

file.php id 18923

Mytå

Rechercher des sujets similaires à "declaration variables liste choix"