Variable à l'initialisation USF

Bonjour,

Pour éviter des créer 10 Userform, je souhaiterais créer une variable dans la macro à l'initialisation.

Mon USF s'ouvre via plusieurs checkbox et récupère des données dans un autre fichier.

Ce que je voudrais faire c'est créer une variable en fonction de la checkbox qui ouvre l'USF.

En fonction de la checkbox, la feuille d'extraction des données ainsi que la cellule d'affectation change.

Avec mes maigres connaissances, je n'arrive pas à le faire......

J'ai essayé de bidouiller quelques chose sans grande réussite

Voici le code d'origine ainsi que le fichier qui lie une checkbox à un USF, donc 10 checkbox = 10 USF..

Private Sub CommandButton1_Click()
If ActiveSheet.CheckBox1 = True Then
    For I = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(I) = True Then
            Range("D3") = Range("D3") & " " & ListBox1.List(I)
        End If

    Next I
    Unload Me
    End If
End Sub
Private Sub UserForm_Initialize()
Dim Chemin As String, Fichier As String

  Chemin = ThisWorkbook.Path & "\"
  Fichier = "Maintenance.xlsx"
  If Dir(Chemin & Fichier) = "" Then
    MsgBox "Manque le fichier ""Maintenance"" : Abandon"
    Exit Sub
  End If

  Application.ScreenUpdating = False
  If ActiveSheet.CheckBox1 = True Then
  With Workbooks.Open(Chemin & Fichier)
    ListBox1.List() = .Sheets("Maintenance").Range("Sol").Value
    .Close savechanges:=False
  End With
  End If
End Sub
22userform-test.xlsm (30.10 Ko)

Merci pour votre aide toujours très précieuse

Bonsoir,

OK, c'est bien de donner un fichier exemple, voire même recommandé...

Cependant, tu ne donnes aucune piste supplémentaires, concernant :

  • Quel USF s'ouvre?
  • Quelle feuille d'extraction?
  • Quelle cellule de destination?

Dans l'état, ton fichier fonctionne.

Après???

Bonjour Cousinhub et merci de t’intéresser une fois de plus à mon problème.

J'aimerais que le usf nommé "Maintenance" s'ouvre qu'importe la checkbox cochée.

En gros en fonction de la checkbox cochée, ça va engendrer une opération de maintenance.

Ces dernières sont listées sur un autre classeur sous diverses feuilles, j'ai également nommé les plages (fichier ci-joint également)

Ce dernier n'est pas complet, je vais le remplir au fur et à mesure que les cas se présentent à moi.

J'aimerais que chaque plage nommée soit appelée par une checkBox via un usf unique.

Dans l'exemple que j'ai donné j’appelle une plage par une chackbox via un usf dédié, donc si j'ai 20 plages, je devrais créer 20 usf.

Je me suis dis que comme toutes les plages étaient sous un même classeur, il devait forcement y avoir une solution plus simple en créant donc deux variables en fonction de la checkBox cochée.

1ère variable la plage nommée qui sert à alimenter la listbox de l'usf

2ème variable la cellule de destination des données sélectionnées dans la listbox

Ci-joint le classeur qui est lié à l'usf

19maintenance.xlsx (11.86 Ko)

Re-,

Regarde les fichier joints...

Dans le fichier "Maintenance.xlsx", j'ai modifié tes zones nommées pour les rendre dynamiques.

Si tu rajoutes des données dans les listes, elles seront prises en compte.

J'ai aussi modifié le nom de l'onglet "Correction_coincements", où j'ai remplacé l'espace par un underscore ("_"). Les espaces n'ont jamais fait bon ménage avec le VBA....

Dans le fichier "userform test.xlsm", j'ai modifié le code...

Regarde si ça te convient.

Bonne soirée

51maintenance.zip (41.97 Ko)

Merci infiniment, c'est parfait.

Je suis admiratif de ton travail et devant les capacités d'excel....

Je vais essayer de comprendre ce que tu as fait demain.

Bonne soirée.

Jeremy

Bonjour Cousinhub,

Je rencontre un "petit" soucis dans mon classeur, la ligne de destination "D" est une ligne fusionnée du coup le code ne fonctionne pas.

Malheureusement, je ne peux pas défusionner ces lignes, ce qui aurait été plus simple, trop simple.

Peux tu m'indiquer comment modifier le code, si toute fois c'es modifiable.

D'avance je te remercie.

Bonjour,

Essaie en remplaçant le code du CommandButton1 de l'USF par celui-ci :

Private Sub CommandButton1_Click()
Cells(LaLigne, "D").MergeArea.ClearContents
For I = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(I) = True Then
        Cells(LaLigne, "D").MergeArea = Cells(LaLigne, "D") & " " & ListBox1.List(I)
    End If
Next I
Unload Me
End Sub

Bon courage

Merci infiniment Cousinhub, ça fonctionne très bien.

Rechercher des sujets similaires à "variable initialisation usf"