Ma ComboBox ne se met plus à jour

Bonjour,

J'ai effectué qq modifs à mon projet (suite aux ddes des utilisateurs) au niveau des activités et de la mise en forme du 'Modèle', donc rien au niveau de ma comboBox qui met à jour les onglets créés.

Pourtant, depuis ces modifications, la combobox ne se met plus à jour automatiquement ; elle ne se met à jour que lorsqu'on ferme le UserForm et qu'on le rouvre.

Voici le code qui fonctionnait avant et qui ne fonctionne plus :

Private Sub UserForm_Initialize()
Dim dlg As Long, tablo
Dim i As Byte
Encours = True
...
With Me.CB5_F4_MoisOnglet
    '.Clear                        ' On efface la liste existante      AVEC OU SANS, ça ne change rien
    For i = 1 To Sheets.Count     ' Pour toutes les pages du classeur
      Select Case Sheets(i).Name
        Case "Menu", "Modèle" ' La liste des pages que l'on ne veut pas afficher
        Case Else
      .AddItem Sheets(i).Name     ' On ajoute le nom
      End Select
    Next i
  End With

Encours = False
End Sub

' PARAMETRES DE LA BOITE F4_Onglets
Private Sub CB5_F4_MoisOnglet_Change()
' Lors du changement dans la ComboBox
  If Me.CB5_F4_MoisOnglet.ListIndex = -1 Then Exit Sub      ' Si l'entrée n'est pas dans la liste on quitte
  'Encours = True                                            'AVEC OU SANS, ça ne change rien
  Sheets(Me.CB5_F4_MoisOnglet.Value).Select                 ' Sélection de la page
 End Sub

Je vous joins mon fichier.

J'ai également une question à poser : on m'a demandé d'ajouter 6 lignes libres avant le tableau de saisie d'activités. il a donc fallu que je modifie le code svt :

Private Sub lB1_Activités_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Ligne As Long
Dim Colonne As Integer
Dim Cel As Range
Dim i
'If Encours = True Then Exit Sub
  Select Case ActiveSheet.Name  ' Select case = si case vraie on sort.
    Case "Menu", "Modèle", "Aide" ' Toutes les feuilles à exclure
    Case Else
      Application.ScreenUpdating = False
      For Each Cel In Selection
        Colonne = Cel.Column     ' Plus facile à manipuler
        Ligne = Cel.Row          ' Plus facile à manipuler
        ' Tests de l'éligibilité de la cellule séléctionnée
        ' Ligne entre 12 et 88
        ' Seulement les lignes 1 et 2 du groupe de 3
        ' Colonne entre 3 et 33
       ' If (Ligne > 11) And (Ligne < 89) And ((Ligne - 12) Mod 3 < 2) And (Colonne > 2) And (Colonne < 34) Then
' QUE J'AI MODIFIE PAR
        If (Ligne > 17) And (Ligne < 95) And ((Ligne - 3)  Mod 3 < 2) And (Colonne > 2) And (Colonne < 34) Then

          Cel = Me.lB1_Activités
        End If
      Next Cel
   End Select

ça fonctionne bien , mais ce que je ne comprends pas c'est la partie : ((Ligne - 3) Mod 3 < 2) pour garder les lignes 1 & 2 sur 3 (pourquoi le signe négatif et pourquoi 12 ou 3 pour le même résultat ?), pourquoi utiliser l'opérateur Mod ?

PS : Merci de bien vouloir détailler vos réponses, je suis débutante (c'est mon premier projet)

Bonjour,

Pourtant, depuis ces modifications, la combobox ne se met plus à jour automatiquement ; elle ne se met à jour que lorsqu'on ferme le UserForm et qu'on le rouvre.

Voici le code qui fonctionnait avant et qui ne fonctionne plus :

De quel combo parles-tu ? de celle-ci --> Me.CB5_F4_MoisOnglet

Merci d'expliquer

Edit : je pense avoir compris le souci

Dans l'USF remplace le code Private Sub CmdB25_F3_Creer_Click par celui ci-après

Private Sub CmdB25_F3_Creer_Click()
'Mise à jour du Modèle avant affichage
Call CopyDuModele
Me.CB5_F4_MoisOnglet.AddItem ActiveSheet.Name
End Sub

Bonjour Dan,

Dan a écrit :

De quel combo parles-tu ? de celle-ci --> Me.CB5_F4_MoisOnglet

oui en effet, c'est bien celle-ci qui gère les onglets créés

.

Dan a écrit :

Dans l'USF remplace le code Private Sub CmdB25_F3_Creer_Click par celui ci-après :

Me.CB5_F4_MoisOnglet.AddItem ActiveSheet.Name

Catastrophe, il se passe n'importe quoi, quand je cré un nouvel onglet, il me dit à tort que l'onglet est déjà créé, dans la combobox, il affiche n'importe quoi, dans n'importe quel ordre...

Bref ce n'est pas la solution.

Merci quand même, il faut trouver autre chose ; sion, si je reprends un fichier vierge et que je recommence tout, tu crois que ça peut solutionner le pb ?

onglets

re,

Catastrophe, il se passe n'importe quoi, quand je cré un nouvel onglet, il me dit à tort que l'onglet est déjà créé, dans la combobox, il affiche n'importe quoi, dans n'importe quel ordre...

Bref ce n'est pas la solution.

Merci quand même, il faut trouver autre chose ; sion, si je reprends un fichier vierge et que je recommence tout, tu crois que ça peut solutionner le pb ?

Recommencer tout ... ben non c'est qu'une question d'arranger le code. J'ai tutilisé le fichier posté mais bon les feuilles étaient cachées apparement.

re,

Au fait la feuille AIDE doit apparaitre dans la combo ou pas ??

Dan,

Dan a écrit :

J'ai tutilisé le fichier posté mais bon les feuilles étaient cachées apparement

Non, seule la feuille modèle est masquée (clic dt / afficher), pour les autres, il suffit de les créer (Ctl + e) ou cliquer sur le bouton 'Barre de Menu' de l'onglet 'Menu' pour ouvrir le UserForm ; mais cette feuille n'est pas utile à ma question.

A partir du UserForm (Barre de Menu), tu cliques sur le bouton 'créer un nouveau mois de saisie' ensuite, tu choisis un autre mois et tu recliques sur le bouton ;

à chaque fois, la combobox CB5_F4_MoisOnglet devrait se mettre à jour, donner la liste des onglets sauf les onglets Menu et Modèle et permettre leur activation.

Merci

Re,

Essaie comme ceci :

  • Dans l’USF supprime Dim encours as boolean
  • Dans l’USF remplace le code que j’ai donné dans mon post précédent par celui-ci
Private Sub CmdB25_F3_Creer_Click()
'Mise à jour du Modèle avant affichage
' MajModèle A ACTIVER
Sheets("Modèle").Activate ' Est-il nécessaire de l'activer ?
Call CopyDuModele
If encours <> True Then Me.CB5_F4_MoisOnglet.AddItem ActiveSheet.Name
encours = False
End Sub
  • Dans le Module en entête juste en dessous de Option Explicit, mets Public Dim encours as boolean
  • Dans le module – code Sub CopyDuModele() remplace l’instruction
MsgBox "Mois déjà existant"

Par

MsgBox "Mois déjà existant": encours = True

Amicalement

Bonjour Dan,

Ca va beaucoup mieux en effet.

Il y a encore un petit truc qui me chiffonne : que je mette

.Clear

ou pas dans les instructions :

' PARAMETRES DE LA BOITE F4_Onglets
Private Sub CB5_F4_MoisOnglet_Change()
    .Clear                        ' On efface la liste existante
' Lors du changement dans la ComboBox
  If Me.CB5_F4_MoisOnglet.ListIndex = -1 Then Exit Sub      ' Si l'entrée n'est pas dans la liste on quitte
  'Encours = True
  Sheets(Me.CB5_F4_MoisOnglet.Value).Select                 ' Sélection de la page
 End Sub

et

Private Sub UserForm_Initialize()
Dim dlg As Long, tablo
Dim i As Byte
encours = True
'....
'Instructions POUR FAIRE APPARAITRE LE NOM DE L ONGLET CHOISI DANS LA COMBOBOX MOIS/ONGLET
With Me.CB5_F4_MoisOnglet
    .Clear                        ' On efface la liste existante
    For i = 1 To Sheets.Count     ' Pour toutes les pages du classeur
      Select Case Sheets(i).Name
        Case "Menu", "Modèle" ' La liste des pages que l'on ne veut pas afficher
        Case Else
      .AddItem Sheets(i).Name     ' On ajoute le nom
      End Select
    Next i
  End With

encours = False
End Sub

il n'y a pas de remise à zéro.

C'est à dire qu'il ne reprend pas la liste des onglets tels qu'ils sont : si on a déplacer un onglet, si on a supprimé un onglet, la combobox ne prend pas en compte ces changements.

Pour les prendre en compte, il faut fermer / ouvrir le UserForm.

De plus, jusqu'à présent, les onglets s'ouvraient entre les feuilles Menu et Aide (ce qui permettait d'avoir toujour la feuille d'aide visible), maintenant ils se créent à la fin. Je ne comprends vraiment pas ce qui se passe, je n'ai pas touché à ces instructions...

En tout cas merci déjà beaucoup ; il va falloir que j'assimile ces 'histoires' d'encours True / False, j'ai pas bien compris quand il est nécessaire de les ouvrir ou de les fermer...

Re,

il n'y a pas de remise à zéro.

C'est à dire qu'il ne reprend pas la liste des onglets tels qu'ils sont : si on a déplacer un onglet, si on a supprimé un onglet, la combobox ne prend pas en compte ces changements.

Pour les prendre en compte, il faut fermer / ouvrir le UserForm.

Pour t'expliquer. La private sub Initialize n'agit qu'à l'ouverture de ton USF. Donc cette Sub USFinitialise ne sert que à l'ouverture et nom à des changements que tu faire après.

Dans le principe VBA l'initialize est utilisée pour la mise en place des différents objets Combo, textbox et ce de manière à ce que tu puisses utiliser ton USF.

Précédemment dans ton fichier tu avais une Sub USFactivate qui comme son nom l'indique agissait à chaque activation de l'USF. j'avais remarqué tout une série d'instructions étaient inutilement exécutées d'où notamment le changement que je t'ai proposé.

Maintenant lorsque tu parles de supprimer un onglet. Dans ton premier fichier il n'y avait pas cette option que je sache

De plus, jusqu'à présent, les onglets s'ouvraient entre les feuilles Menu et Aide (ce qui permettait d'avoir toujour la feuille d'aide visible), maintenant ils se créent à la fin. Je ne comprends vraiment pas ce qui se passe, je n'ai pas touché à ces instructions...

Il n'y pas de raison là. Dans le fichier dont je dispose je n'ai pas cette situation. La feuille Aide est toujours bien placée en dernier ?

A te relire

Dans la version V4.1, avec la Private Sub UserForm_Activate, les feuilles étaient Menu, Modèle, Aide ; Chaque planning créé se plaçaient de gauche à droite entre les feuilles Menu et Modèle ; Si une feuille planning était supprimée, elle n'apparaissait plus dans la combo 'CB5_F4_MoisOnglet - par contre si on supprimait l'onglet 10-12 après avoir créer le 11-12 et qu'on re créait le 10-12, il se positionnait après le 11-12 (je n'ai jamais réussi à les classer automatiquement à cause des années à la française...)

Par contre, à l'époque, la procédure de mise à jour de la CB5_F4_MoisOnglet n'était pas incluse dans la UserForm_Activate.

A toute fin utile, je joins cette version périmée.

19planning-at-v4-1.xlsm (178.64 Ko)

Re,

Le positionnement des feuilles ne devrait pas poser de souci si la feuille Aide est positionnée en dernière feuille.

Par contre face à ton souci de combo, j'ai dû apporter quelques changements dans quelques codes.

Si ton fichier est identique à la version Planning AT V4.2.2Q que tu as postée avant, je peux te donner le fichier sur lequel j'ai apporté les modifications. Dans le cas contraire, je te donnerai les 3 codes qui sont à changer

A te relire

Bonjour Dan

Dan a écrit :

Le positionnement des feuilles ne devrait pas poser de souci si la feuille Aide est positionnée en dernière feuille.

Oui tu as raison, il n'y a plus de pb avec le positionnement, c'était hier, j'ai eu bcp de pb avec mon ordi, j'ai redémarré plusieurs fois...

Dan a écrit :

Si ton fichier est identique à la version Planning AT V4.2.2Q que tu as postée avant, je peux te donner le fichier sur lequel j'ai apporté les modifications.

Oui, avec plaisir, j'ai fait quelques modifs à la marge (ajout d'un quadrillage de bordures, car la fonction "coller que les bordures" n'existe pas...)

Merci encore

Bonjour,

Voici en retour le fichier avec les modifications

Amicalement

Bonjour Dan,

Tout est "presque" parfait.

Merci beaucoup pour ton aide, à la prochaine...

Rechercher des sujets similaires à "combobox met jour"