Pb liste de choix de ComboBox

breitzou

XLDnaute Occasionnel
Bonjour le forum,

j'ai un fichier dans lequel j'ai crée un UserForm multipage.
A l'activation du UserForm, les données sont importées des onglets vers le UserForm.
Et normalement, je dois aussi pouvoir modifier le contenu des ComboBox et des DtPicker. En validant, cela met à jour le contenu des cellules dans les onglets.
C'est là que ça coince !
1- Pourquoi à l'activation du UserForm, les DtPicker nommés C11 et C14 ne sont pas pris en compte ? J'ai un code erreur qui s'affiche.
2- Pourquoi je n'ai plus accès au liste déroulante des ComboBox ?
Si je supprime les lignes de code gérant C11 et C14, l'importation des données se fait correctement.
Et pour pouvoir voir mes listes déroulantes dans mes ComboBox, je suis obligé de renommer, dans le code, le UserForm.
Les deux conditions ne fonctionnent pas ensemble et je ne comprends pas pourquoi !
Merci de votre aide
Ci-joint le fichier.

Breitzou
 

Pièces jointes

  • Essai3.xlsm
    31.9 KB · Affichages: 29
  • Essai3.xlsm
    31.9 KB · Affichages: 38
  • Essai3.xlsm
    31.9 KB · Affichages: 40

Paf

XLDnaute Barbatruc
Re : Pb liste de choix de ComboBox

Bonjour breitzou

1- dans Sub UserForm_Activate() aucun code n'est prévu pour renseigné C11 et C14 tout simplement ! alors que pour les DTPicker C2,C5 et C8 il existe.

2 - Plus d'accès aux combobox par ce que rien ne vient les alimenter !
Le code pour les initialiser devrait se trouver dans Sub UserForm_Initialize() procédure évènementielle de tous les userform quelque soient leur nom. Or là on trouve le code dans Sub UserForm1_Initialize() procédure qui ne sera jamais lancée.

A+
 

Paf

XLDnaute Barbatruc
Re : Pb liste de choix de ComboBox

Re,

j'ai été un peu vite sur le point 1

l'initialisation des DtPicker "plante" parce qu'à ce moment ils ne sont pas sur la page active. Il faut donc activer la page avant
Code:
    Me.MultiPage1.Value = 1
    C11.Value = Sheets("feuil3").Range("C5").Value
    C14.Value = Sheets("feuil3").Range("C6").Value

A+
 

breitzou

XLDnaute Occasionnel
Re : Pb liste de choix de ComboBox

Bonjour Paf,

merci pour ton aide. Je viens de le mettre en place. Et cela fonctionne.
Sauf que maintenant les données que je modifie ne sont plus prises en compte dans mes onglets.
Pourtant je n'ai rien changé dans mes procédures de modifications de données.
Merci encore pour ton aide

Breitzou


Sub UserForm_Activate()

C1.Value = Sheets("feuil2").Range("B5").Value
C2.Value = Sheets("feuil2").Range("C5").Value
C3.Value = Sheets("feuil2").Range("D5").Value
C4.Value = Sheets("feuil2").Range("B6").Value
C5.Value = Sheets("feuil2").Range("C6").Value
C6.Value = Sheets("feuil2").Range("D6").Value
C7.Value = Sheets("feuil2").Range("B7").Value
C8.Value = Sheets("feuil2").Range("C7").Value
C9.Value = Sheets("feuil2").Range("D7").Value
Me.MultiPage1.Value = 1
C11.Value = Sheets("feuil3").Range("C5").Value
C14.Value = Sheets("feuil3").Range("C6").Value
C10.Value = Sheets("feuil3").Range("B5").Value

C12.Value = Sheets("feuil3").Range("D5").Value
C13.Value = Sheets("feuil3").Range("B6").Value

C15.Value = Sheets("feuil3").Range("D6").Value
End Sub

Sub UserForm_Initialize()
Set f = Feuil2
C1.List = Array("Effectué", "En cours", "Non effectué")
C3.List = Array("Dudul", "Riri", "Fifi", "Loulou", "Tic", "Tac")
C4.List = Array("Effectué", "En cours", "Non effectué")
C6.List = Array("Dudul", "Riri", "Fifi", "Loulou", "Tic", "Tac")
C7.List = Array("Effectué", "En cours", "Non effectué")
C9.List = Array("Dudul", "Riri", "Fifi", "Loulou", "Tic", "Tac")
Set f = Feuil3
C10.List = Array("Effectué", "En cours", "Non effectué")
C12.List = Array("Dudul", "Riri", "Fifi", "Loulou", "Tic", "Tac")
C13.List = Array("Effectué", "En cours", "Non effectué")
C15.List = Array("Dudul", "Riri", "Fifi", "Loulou", "Tic", "Tac")

End Sub

Private Sub CommandButton3_Click() 'modifier les données
If C1.ListIndex > -1 Then
With f
For y = 1 To 3: .Cells(C1.ListIndex + 5, y + 1) = Me("C" & y).Value: Next y
For y = 4 To 6: .Cells(C1.ListIndex + 6, y - 2) = Me("C" & y).Value: Next y
For y = 7 To 9: .Cells(C1.ListIndex + 7, y - 5) = Me("C" & y).Value: Next y
End With
End If
Unload Me
End Sub

Private Sub CommandButton9_Click() 'modifier les données
If C10.ListIndex > -1 Then
With f
For y = 10 To 12: .Cells(C10.ListIndex + 5, y - 8) = Me("C" & y).Value: Next y
For y = 13 To 15: .Cells(C10.ListIndex + 6, y - 11) = Me("C" & y).Value: Next y
End With
End If
Unload Me
End Sub
 

Paf

XLDnaute Barbatruc
Re : Pb liste de choix de ComboBox

Re,

Dans Sub UserForm_Initialize(), on initialise la variable f avec Set f = Feuil2 et c'est la même variable qui est utilisée à la validation des données en page 1 (OK c'est la bonne feuille) et en page 2 (pas OK on devrait avoir la Feuil3)

Par ailleurs,pour la page 1, les données sont elles toujours écrites Feuil2 lignes 5, 6 et 7; et pour la page 2, les données sont elles toujours écrites Feuil3 lignes 5 et 6 ?

Les 3 lignes de la page 1 sont elles forcément renseignées, et les deux lignes de la page 2 ? si une ligne n'est pas renseignées, faut-il porter une ligne vide dans la feuille? en, plus de précision concernant la gestion de ces lignes, parce que le fait de se baser sur la valeur de la première combobox (pour chaque page) pour enregistrer sur la feuille me chagrine .

A+
 

breitzou

XLDnaute Occasionnel
Re : Pb liste de choix de ComboBox

Re,

1- concernant la variable f, je pensais qu'en précisant set f=feuil3 dans le Sub UserForm_Initialize(), cela suffisait pour que ce soit pris en compte dans la feuil3.
2- concernant les données : il peut effectivement y avoir des lignes vides que ce soit dans la feuil2 ou la feuil3.
Mais il s'agit bien de modifier des données et non de créer des lignes supplémentaires en feuil2 et feuil3. C'est à dire que tout ce qui apparaît dans le UserForm, par exemple AA1 ; 1 ; 2 ; 3 a son équivalent dans la feuil2 et idem pour la feuil3.
J'espère que mon explication est claire.

Merci pour ton aide.

Breitzou
 

Paf

XLDnaute Barbatruc
Re : Pb liste de choix de ComboBox

re

concernant la variable f, je n'avais pas vu la deuxième ligne dans l'Initialize, mais alors f contient Feuil3 (la dernière valeur 'rentrée' dans f)
deux solutions
1) dans Initialize déclarer deux variables distincte s=> par exemple f2= Feuil2 et f3=Feuil3 puis dans les sub des boutons, utiliser With f2 et with f3
2) mais, puisque Feuil2 n'est utilisée que dans Private Sub CommandButton3_Click() et Feuil3 dans Private Sub CommandButton9_Click() on pourrait écrier directement dans ces sub : With Feuil2 pour l'une et With Feuil3 pour l'autre

Concernant l'écriture des données :

sur la première ligne de la page 1 , on va trouver les données lues en Feuil2 ligne 5. A la validation on va réecrire ces données:
mais si le statut passe à 'Non Effectué', le listindex de cette Combobox C1 passe à 2 et donc dans
For y = 1 To 3: .Cells(C1.ListIndex + 5, y + 1) = Me("C" & y).Value: Next y on écrira en ligne 7( C1.listindex valant 2)

Peut-être vaudrait-i mieux écrire en Private Sub CommandButton3_Click()
Code:
   For y = 1 To 3: .Cells( 5, y + 1) = Me("C" & y).Value: Next y
   For y = 4 To 6: .Cells( 6, y - 2) = Me("C" & y).Value: Next y
   For y = 7 To 9: .Cells( 7, y - 5) = Me("C" & y).Value: Next y

même adaptation pour Private Sub CommandButton9_Click()

A+
 

breitzou

XLDnaute Occasionnel
Re : Pb liste de choix de ComboBox

Re,

merci Paf pour ton aide.
J'ai adapté le code par rapport à ce que tu m'as écris.
Et cela fonctionne.
Il y a juste les DtPicker qui posent problème. Si il n'y a pas de date déjà inscrite dans les feuil2 et feuil3, il y a un message d'erreur qui s'affiche.
Je peux éventuellement laisser une date dans ces feuilles. Ce n'est pas trop un problème.

Je vais continuer sur le même schéma avec les autres pages du formulaire en espérant que cela fonctionne.
En cas de problème et si je ne trouve pas la solution, je relancerai la discussion.
Merci encore pour ton aide.

Breitzou
 

Paf

XLDnaute Barbatruc
Re : Pb liste de choix de ComboBox

Re,

pour les cellules date vides, un test et si vide on fait afficher la date du jour par exemple

Code:
Sub UserForm_Activate()
    Me.MultiPage1.Value = 0 'pour les DtPickers page 1
    C1.Value = Sheets("feuil2").Range("B5").Value
    ...
    ...
    '*****si cellule vide on affiche date du jour
    C2.Value = IIf(Sheets("feuil2").Range("C5").Value, Sheets("feuil2").Range("C5").Value, Date)
    C5.Value = IIf(Sheets("feuil2").Range("C6").Value, Sheets("feuil2").Range("C6").Value, Date)
    C8.Value = IIf(Sheets("feuil2").Range("C7").Value, Sheets("feuil2").Range("C7").Value, Date)

    Me.MultiPage1.Value = 1 ' pour les DtPickers page 2
    C10.Value = Sheets("feuil3").Range("B5").Value
    ...
    ...
    '*****si cellule vide on affiche date du jour
    C11.Value = IIf(Sheets("feuil3").Range("C5").Value, Sheets("feuil3").Range("C5").Value, Date)
    C14.Value = IIf(Sheets("feuil3").Range("C6").Value, Sheets("feuil3").Range("C6").Value, Date)
    Me.MultiPage1.Value = 0 ' affichage de la page 1 à l'ouverture USF
End Sub

Pour les éventuels futurs problèmes (qui ne seront pas les mêmes que ceux rencontrés jusque là), mieux vaudrait ouvrir une nouvelle discussion.

Bonne suite
 

breitzou

XLDnaute Occasionnel
Re : Pb liste de choix de ComboBox

Re,

merci Paf pour ton aide précieuse. Je vais mettre en place le code pour gérer les cellules dates vides.
Pas de soucis concernant l'ouverture d'une nouvelle discussion en cas de besoin.
Merci encore.

A bientôt

Breitzou
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom