ListFillrange de ComboBox = nom de plage de cellule

Kewan

XLDnaute Nouveau
Bonjour à tous.

J'ai besoin d'un coup de main.

J'ai fait un classeur de 2 feuilles.
La première contient des ComboBox
La deuxième est un tableau pour nommer des plages de cellules

J'ai fait un code pour que mes plages de cellules se créent et se nomment automatiquement au fur et à mesure que je modifie mon tableau. Le voici :

Code:
Private Sub Worksheet_Deactivate()
   
  Range("B3:B" & [B65000].End(xlUp).Row).Name = [B2]
  Range("C3:C" & [C65000].End(xlUp).Row).Name = [C2]
  Range("D3:D" & [D65000].End(xlUp).Row).Name = [D2]
  Range("E3:E" & [E65000].End(xlUp).Row).Name = [E2]
  Range("F3:F" & [F65000].End(xlUp).Row).Name = [F2]
  Range("G3:G" & [G65000].End(xlUp).Row).Name = [G2]
  Range("H3:H" & [H65000].End(xlUp).Row).Name = [H2]
  Range("I3:I" & [I65000].End(xlUp).Row).Name = [I2]
  Range("J3:J" & [J65000].End(xlUp).Row).Name = [J2]

End Sub

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

Pouvez vous m'aider ?

Cordialement.

Kewan
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : ListFillrange de ComboBox = nom de plage de cellule

Bonsoir Kewan, et bienvenue,

As-tu tout simplement essayé :

Code:
Private Sub ComboBox1_GotFocus()
Dim Plage As String
 Plage = Sheets("Feuil2").Range("B2").Value
 ComboBox1.ListFillRange = Range(Plage)
End Sub

Ce devrait marcher puisque le nom de la plage est contenu en colonne 2.

Cordialement.
 

Kewan

XLDnaute Nouveau
Re : ListFillrange de ComboBox = nom de plage de cellule

Bonsoir Papou-net merci pour ton aide et ton accueil.

Ça n'a pas fonctionné j'obtiens cette erreur.

captureoerk.jpg

J'ai modifié par :

Code:
Private Sub ComboBox1_GotFocus()

Dim Plage As String
 
 Plage = Sheets("Feuil2").Range("B2").Value
 ComboBox1.ListFillRange = Plage

End Sub
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    19.6 KB · Affichages: 158
  • Capture.JPG
    Capture.JPG
    19.6 KB · Affichages: 182
  • Capture.JPG
    Capture.JPG
    19.6 KB · Affichages: 176
Dernière édition:

Papou-net

XLDnaute Barbatruc
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.
 
Dernière édition:

Kewan

XLDnaute Nouveau
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
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
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

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.

Espérant avoir répondu à tes questions.

Cordialement.
 

Pièces jointes

  • Kewan.xlsm
    63.7 KB · Affichages: 147

Kewan

XLDnaute Nouveau
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.

Voilà mon code pas pratique :

Code:
Range("B3:B" & [B65000].End(xlUp).Row).Name = [B2]
  Range("C3:C" & [C65000].End(xlUp).Row).Name = [C2]
  Range("D3:D" & [D65000].End(xlUp).Row).Name = [D2]
  Range("E3:E" & [E65000].End(xlUp).Row).Name = [E2]
  Range("F3:F" & [F65000].End(xlUp).Row).Name = [F2]
  Range("G3:G" & [G65000].End(xlUp).Row).Name = [G2]
  Range("H3:H" & [H65000].End(xlUp).Row).Name = [H2]
  Range("I3:I" & [I65000].End(xlUp).Row).Name = [I2]
  Range("J3:J" & [J65000].End(xlUp).Row).Name = [J2]
  Range("K3:K" & [K65000].End(xlUp).Row).Name = [K2]
  Range("L3:L" & [L65000].End(xlUp).Row).Name = [L2]
  Range("M3:M" & [M65000].End(xlUp).Row).Name = [M2]
  Range("N3:N" & [N65000].End(xlUp).Row).Name = [N2]

Si quelqu'un peut m'expliquer comment faire

Cordialement.

Kewan.
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
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.

Espérant avoir répondu.

Cordialement.
 

Kewan

XLDnaute Nouveau
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.

Merci pour votre aide.

Cordialement.

Kewan.
 

Pièces jointes

  • Atelier.xlsm
    39.8 KB · Affichages: 144

Papou-net

XLDnaute Barbatruc
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.

Espérant avoir résolu.

Cordialement.
 

Pièces jointes

  • Copie de Atelier.xlsm
    43.7 KB · Affichages: 121

Kewan

XLDnaute Nouveau
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.
 

Papou-net

XLDnaute Barbatruc
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.

RE

Non, je n'ai rien fait d'autre.

Par ailleurs, le fichier que j'ai joint est celui que tu as transmis dans ton message 12, et que j'ai modifié.

Essaie de reprendre ton fichier initial de le modifier comme je l'ai fait, et de l'enregistrer avant de faire tes essais.

Tu en auras le coeur net.

Cordialement.
 

Discussions similaires

Réponses
7
Affichages
356

Statistiques des forums

Discussions
312 469
Messages
2 088 691
Membres
103 921
dernier inscrit
hhhh