J'aimerais associer la ListFillRange des ComboBox au nom des plages de cellule mais je ne sais pas associer les deux.
J'ai fait un code mais il ne fonctionne pas et je dois répéter les dimensions de la plage. Il me marque mémoire insuffisante il doit pas aimer B" & .Range("B65536").End(xlUp)
Code:
Private Sub ComboBox1_GotFocus()
Dim Plage As String
With Sheets("Feuil2")
Plage = Range("B3:B" & .Range("B65536").End(xlUp).Row).Address
End With
ComboBox1.ListFillRange = "Feuil2!" & Plage
End Sub
Re : ListFillrange de ComboBox = nom de plage de cellule
RE :
OK, avec un fichier c'est de suite plus simple.
Voici donc comment réécrire tes macros :
Code:
Dim Plage As String
Private Sub ComboBox1_GotFocus()
Plage = "Feuil2!" & Sheets("Feuil2").Range("jours").Address
ComboBox1.ListFillRange = Plage
End Sub
Private Sub ComboBox2_GotFocus()
Plage = "Feuil2!" & Sheets("Feuil2").Range("mois").Address
ComboBox2.ListFillRange = Plage
End Sub
Espérant avoir résolu.
Cordialement.
PS : je me pose la question de savoir pourquoi remettre ces listes à jour à chaque sélection, car elles semblent figées à l'avance. Si c'est bien le cas, il serait plus simple de renseigner directement la propriété dans VBE.
Re : ListFillrange de ComboBox = nom de plage de cellule
Merci Papou-net
Par contre j'ai une fenêtre qui apparait : Mémoire insuffisante pour afficher en entier
Ça vient de quoi ?
Certaines sélections sont figées mais quelques unes vont évoluer de temps en temps. Que veut tu dire par renseigner directement la propriété dans VBE
Edit :
J'ai changé la police de toutes mes feuilles en calibri, 12, noir et plus de fenêtre qui apparait : Mémoire insuffisante pour afficher en entier. La trop grande quantité de polices différentes doit gêner
Concernant la fenêtre Mémoire insuffisante, j'ai déjà eu ce genre de problème qui peut, à mon avis, avoir plusieurs origines. Dans ton cas je pencherais pour le fait que l'on réactualise les listes à chaque sélection sans les réinitialiser. Si, lorsque cela arrive, tu fermes le fichier et le rouvres aussitôt tu ne devrais plus avoir ce problème. Mais si tu renseignes les propriétés de chaque ComboBox directement dans VBE (voir copie d'écran sur Feuil1) ça devrait résoudre définitivement la question.
Même si certaines données sont appelées à évoluer, si tu les changes à l'intérieur des plages nommées les listes se mettront à jour automatiquement. Si tu ajoutes des données à la fin de ces plages, il ne faut pas oublier le les redéfinir.
Je te joins une copie de ton fichier dans laquelle j'ai mis "en dur" les propriétés des contrôles. Pour que tu puisses voir et tester, j'ai mis en commentaires les lignes de code de la Feuille 1.
Re : ListFillrange de ComboBox = nom de plage de cellule
Merci Papou-net pour ton aide.
J'ai sortie mon code qui permet aux plages de cellules de se créer et se nommer automatiquement du Private Sub Worksheet_Deactivate(). Je l'ai mis dans une macro associé à un bouton dans la feuille comme cela les plages sont mis à jour uniquement si je clic sur mon bouton.
Par contre j'aimerais faire un code qui prendrais toutes les cellules de la ligne 2 remplis pour en faire des plages avec les cellules des lignes inférieures jusqu'à la dernière cellule non vide. Car avec mon code il faut que je le modifie à chaque fois que je rajoute une colonne ou que j'en enlève une.
Re : ListFillrange de ComboBox = nom de plage de cellule
Bonsoir Kewan,
Solution effectivement peu commode.
Tu peux donc modifier le code de ton bouton comme ceci :
Code:
With Feuil2
For Each cel In .Range("2:2").SpecialCells(xlCellTypeConstants)
dlg = cel.End(xlDown).Row
.Range(cel.Offset(1, 0), .Cells(dlg, cel.Column)).Name = cel.Value
Next
End With
Cette boucle analyse toutes les cellules non vides de la ligne 2 (hormis les formules). Donc, si tu ajoutes une colonne sans y mettre de titre, il n'y aura pas d'erreur générée par VBA.
Re : ListFillrange de ComboBox = nom de plage de cellule
Salut à tous.
J'ai toujours mon problème de fenêtre qui apparait : Mémoire insuffisante pour afficher en entier quand j'utilise une Zone de liste déroulante (active X).
Je n'arrive pas à comprendre d'où cela peut venir. Pour essayer de trouver le problème j'ai supprimé toutes mes macros mais ça n'a rien changé.
J'ai remarqué que ce problème apparait que si je clic sur la flèche de la Zone de liste déroulante en premier. Par contre si je clic dans sa zone de texte en premier et après sur sa flèche la fenêtre n'apparait pas.
J'ai remarqué aussi que si la même Zone de liste déroulante (active X) était placée sur une autre feuille aucun problème n'apparaissait.
Je vous soumet mon fichier. Ma Zone de liste déroulante (active X) qui pose problème est positionné en N5 sur la feuille Compte_rendu . J'ai copié la zone sur la Feuil1 et elle ne cause aucun problème.
Re : ListFillrange de ComboBox = nom de plage de cellule
Bonjour Kewan,
Peut-être est-ce dû au fait que la cellule liée à ta liste déroulante (N5) est une cellule fusionnée. Les fusions occasionnent souvent des problèmes avec le code VBA. J'ai donc séparé N5:R5 et j'ai mis la couleur de police de N5 identique à la couleur de fond.
A toi de tester si le message d'erreur subsiste, car chez moi je ne le vois pas apparaître.
Re : ListFillrange de ComboBox = nom de plage de cellule
Salut Papou-net. Merci pour ta réponse.
Si je prends le fichier que tu as mis en ligne effectivement ça fonctionne. Par contre si je reprends celui que j'ai mis en ligne et que je sépare mes cellules ça fait toujours le même problème.
As tu fait autre chose que séparer les cellules ?
Je vois que ton fichier fait 4 Ko de plus que le mien.
Si je prends le fichier que tu as mis en ligne effectivement ça fonctionne. Par contre si je reprends celui que j'ai mis en ligne et que je sépare mes cellules ça fait toujours le même problème.
As tu fait autre chose que séparer les cellules ?
Je vois que ton fichier fait 4 Ko de plus que le mien.