Autres Créer une nouvelle barre de commande sous Excel 2007

Slavko.R

XLDnaute Nouveau
Bonjour à tous

Planning d'activité et de 'RV', avec images
Description du projet

Voici le contexte, aujourd'hui, je réalise un planning mensuel avec affichages d'images pour symboles.
Les images remplacent une partie du texte qui doivent illustrer l'activité ou le 'RV' programmé.
jusque là tout se déroule bien, mon planning fonctionne.
Il affiche les dates et change de mois quand je le souhaite, la feuille matricielle qui doit renfermer l'ensemble des mages est également prête.

Planning avec images, programmation sous VBA

C'est ici que les choses se gâtent, pour pouvoir demander à mon planning de sélectionner les images dont j'ai besoin, je dois faire appel à une "barre de commande" spéciale qui n'est pas présente dans aucun des bandeaux d'Excel 2007.
Ce bandeau, doit être commandé à partir d'un onglet, appelé 'Complément'.
Cet onglet doit être ajouté pour pouvoir disposer de la barre de commande qui est encapsulée dans cette nouvelle rubrique
J'ai rédigé le programme sous VBA pour pouvoir appeler le nouvel onglet (''complément'') et faire ainsi apparaitre la rubrique en question quand je le veut.
La première et la dernière partie du programme fonctionnent, j'arrive à faire apparaitre l'onglet "complément" ou le faire disparaître à volonté.

Mais, le bandeau de cette rubrique reste complètement vide...
La nouvelle commande (barre de commande) que je veut utiliser pour l'affichage de mes images reste invisible.
Elle est normalement encapsulée dans le bandeau de cette rubrique "complément" et doit apparaître avec, n'est il pas?

Hors, dans mon cas, il n'y a que le bandeau vide qui s'affiche et point de commande en vue, à l'intérieur!

Que c'est-il passé? Est ce que quelqu'un saurait me le dire?
Enfin, ma demande est la suivante:
Elle concerne bien- entendu la correction du problème, avec l'appui d'un expert qui saurait quoi faire dans cette situation pour rendre mon planning à la fois vivant et très ''Funny''

D'avance, je remercie ceux et celles qui acceptent de consacrer un peu de leur temps à ce nouveau défi.

Cordialement vôtre,
Slav
 

Pièces jointes

  • Planing.xlsb
    380.6 KB · Affichages: 29

Dranreb

XLDnaute Barbatruc
Bonsoir.
En tout cas votre classeur commence par montrer deux images liées à ce qu'il y a 3 ou 4 références portées MANQUANT à décocher quand on fait Alt+OR dans VBE.
Pour pouvoir décocher la "Microsoft Calendar Control 2007" j'ai dû d'abord supprimer la feuille "Feuil3"
 

patricktoulon

XLDnaute Barbatruc
le probleme
1 couleur est mal interprété
si tu ajoute ta barre elle va être sur une seule ligne c'est moche
je te propose donc la seul solution que l'on a avec commandbars.add
a savoir: on va en faire 3
et en KADO on va fabriqué les icon de la meme couleur de fond de tes cellules

j'ai commencé par ajouter le name correspondant a la plage
j'ai aussi changé la méthode de suppression de barre
donc toute celles qui ne sont pas d'origine seront deletées dans l' Auto_close
et parti de là
VB:
Sub auto_open()
    Dim X&, A&, Y, Barre As CommandBar, bouton
    X = Round([mescouleurs].Cells.Count / 3): A = 1: Y = 0
    On Error Resume Next
    Set Barre = CommandBars.add("BarreColoriage" & 1): Barre.Visible = True
    For i = 1 To [mescouleurs].Cells.Count
        Y = Y + 1
        If Y = X Then Y = 0: A = A + 1: Set Barre = CommandBars.add("BarreColoriage" & A): Barre.Visible = True
        Set bouton = Barre.Controls.add(msoControlButton, , , , True)
        With bouton
            .Caption = [mescouleurs].Cells(i)
            '.BeginGroup = True
            .Style = msoButtonIconAndCaption
            MakeClipIconCouleur [mescouleurs].Cells(i).Interior.ColorIndex
            .PasteFace
            .OnAction = "'Coloriage """ & i & """'"
        End With
    Next
End Sub
Public Sub MakeClipIconCouleur(coul As Long, Optional forme = 6)
    Dim ico As Object
    With ActiveSheet
        Set ico = .Shapes.AddShape(forme, 10, 10, 10, 10)
        With ico
            .DrawingObject.Interior.ColorIndex = coul
            .Line.Visible = False
            .CopyPicture
            .Delete
        End With
    End With
End Sub
Sub auto_close()
    Dim Cbar As CommandBar
    For Each Cbar In CommandBars
        If Cbar.BuiltIn = False Then Cbar.Delete
    Next
End Sub
démonstration
demo8.gif
 
Dernière édition:

Slavko.R

XLDnaute Nouveau
le probleme
1 couleur est mal interprété
si tu ajoute ta barre elle va être sur une seule ligne c'est moche
je te propose donc la seul solution que l'on a avec commandbars.add
a savoir: on va en faire 3
et en KADO on va fabriqué les icon de la meme couleur de fond de tes cellules

j'ai commencé par ajouter le name correspondant a la plage
j'ai aussi changé la méthode de suppression de barre
donc toute celles qui ne sont pas d'origine seront deletées dans l' Auto_close
et parti de là
VB:
Sub auto_open()
    Dim X&, A&, Y, Barre As CommandBar, bouton
    X = Round([mescouleurs].Cells.Count / 3): A = 1: Y = 0
    On Error Resume Next
    Set Barre = CommandBars.add("BarreColoriage" & 1): Barre.Visible = True
    For i = 1 To [mescouleurs].Cells.Count
        Y = Y + 1
        If Y = X Then Y = 0: A = A + 1: Set Barre = CommandBars.add("BarreColoriage" & A): Barre.Visible = True
        Set bouton = Barre.Controls.add(msoControlButton, , , , True)
        With bouton
            .Caption = [mescouleurs].Cells(i)
            '.BeginGroup = True
            .Style = msoButtonIconAndCaption
            MakeClipIconCouleur [mescouleurs].Cells(i).Interior.ColorIndex
            .PasteFace
            .OnAction = "'Coloriage """ & i & """'"
        End With
    Next
End Sub
Public Sub MakeClipIconCouleur(coul As Long, Optional forme = 6)
    Dim ico As Object
    With ActiveSheet
        Set ico = .Shapes.AddShape(forme, 10, 10, 10, 10)
        With ico
            .DrawingObject.Interior.ColorIndex = coul
            .Line.Visible = False
            .CopyPicture
            .Delete
        End With
    End With
End Sub
Sub auto_close()
    Dim Cbar As CommandBar
    For Each Cbar In CommandBars
        If Cbar.BuiltIn = False Then Cbar.Delete
    Next
End Sub
démonstration
Regarde la pièce jointe 1095006
Bonjour à vous tous

Tout d'abord un grand merci à ceux et celles qui ont pris un peu de leur temps pour tenter de résoudre ce problème.
Une fois de plus "chapeau" et un grand merci.
Ensuite, j'ai testé le résultat de cet essai et malheureusement c'est un échec.

Je vous joints l'erreur qui s'affiche dans VBA, lorsque je lance cette solution
Alors, je me pause la question de la compatibilité du programme?

En effet, je suis sur le 'PC' de mon travail, cela peut-il avoir une incidence?
Car, lorsque l'on regarde le code, il semble parfait ainsi.
Mais lorsque je le copie et que je l'applique sur la feuille de calcule qui est archivée sur mon 'PC' (boulot), je rencontre à nouveau un obstacle…

Maintenant, il faudrait que je test le même code sur la feuille Excel d'origine qui, elle se trouve sur mon 'PC' perso?

Cordialement vôtre,
Slav
 

Pièces jointes

  • Planing.xlsb
    185.4 KB · Affichages: 4
Dernière édition:

Slavko.R

XLDnaute Nouveau
Bonjour chers D'Naute
Pardonnez mon ignorance, mais, je ne vois pas de quoi il s'agit.
Cette précision m'échappe complètement, par "name", qu'entends-tu exactement?

Pour info, je n'ai pas l'expérience que vous avez tous en VBA, je ne suis qu'un profane.
Donc, je ne maîtrise pas encore totalement le jargon technique.
Ainsi, que certaines spécificités d'ordre pratique, (ou placer exactement les bons arguments et quels sont peut être les bons arguments à placer?)

Dit autrement, j'ai fais des erreurs de débutants soit et comme tout bon débutants qui se respecte, ces erreurs ne m'apparaissent pas toujours évidentes, à l'inverse des experts en programmation que vous êtes à n'en pas douter.

Alors, oui! Je ne suis pas contre quelques connaissances spécifiques aux barres de commandes, à l'instar de celle que je veux réaliser.
En effet, je veux réaliser ce programme, mais également en maîtriser les aspects techniques.
J'ai le sentiment que ces barres sont particulières et qu'elles peuvent être capricieuses.

Enfin, je vois ce défit (VBA & barre de commande), comme une étape dans mon apprentissage personnel (dans le domaine de la programmation avec VBA)
Cette barre de commande est un bon moyen de progresser, car ma curiosité étant piquée, je ne vais plus reculer.

J'ai commencé ce travail, je dois le finir!
Par conséquent, je reste ouvert et à l'écoute des infos qui feront avancer mon projet (sur cette barre de commande)

Dans l'attente, merci
Cordialement vôtre, Slav
 

patricktoulon

XLDnaute Barbatruc
Bonjour
va a l'onglet formule
choisi gestionnaire de nom
dans la fenêtre qui s'ouvre clique sur "nouveau"
dans la nouvelle petite fenêtre qui s'ouvre tape le nom par exemple ici "mescouleurs"
ensuite tu va en bas de cette petite fenêtre et tu clique sur l'icone a droite
et tu sélectionne la plage que tu veux nommer
et enfin clique sur OK
mais de toute façon je te l'ai fait dans ton fichier
 

Slavko.R

XLDnaute Nouveau
Re-bonjour, amis D'naute

Patrick d'abord, un grand merci pour ton aide précieuse et ta patience.
J'ai suivi tes indications, je suis allé dans le gestionnaire de nom et rentré le name: "mescouleurs", ainsi que la sélection des couleurs.

Malheureusement, il n'y a toujours pas de résultat.
Disons, que cela a résolu le précédent problème et en a fait apparaître un autre que je détaille ci après

"Erreur de compilation, membre de donnée ou de méthode introuvable"
L'erreur apparaît toujours sur la seconde ligne, mais, cette fois au niveau de l'argument . Cells . Count

Je rappelle, a titre indicatif que je travaille sur un fichier test qui se trouve sur mon 'PC' au travail...
Cordialement,

Slav
 

Slavko.R

XLDnaute Nouveau
Bonjour à vous tous chers D'Nautes

Ci joint le classeur Excel que j'utilise sur le 'PC de mon Bureau.
Prière de regarder ce qui coince au niveau de ce code et d'y apporter correctif si possible.

Par ce que, si ce code fonctionne avec vous avec votre propre environnement informatique, il n'y a pas de raison que cela ne fonctionne pas également avec le mien! (professionnel) et peu importe qu'il s'agisse d'une copie ou non, n'est il pas?

D'avance, chers amis, encore une fois un grand merci

Cordialement vôtre,
Slav
 

Pièces jointes

  • Planing.xlsb
    493.8 KB · Affichages: 4

Slavko.R

XLDnaute Nouveau
Rebonjour,

Effectivement tu as raison sur ce point Patrick.
Quand on veut faire une compétition d'art martial on commence d'abord par appendre à se battre.
En VBA, c'est certainement le même principe qui dicte la façon dont on doit progresser.

Sauf que j'ai une grande capacité à comprendre les choses assez rapidement, et j'aime engranger du savoir (je suis curieux), d'une part.

De plus, j'ai réaliser deux ou trois petites choses sur VBA que j'ai créée (Comme un Userform original, du type: (Combo box multiples), pour planning menu un peu spécial que j'ai réalisé à la demande de ma compagne.

Sur ce projet j'ai été aux prises également à des difficultés que j'ai finalement résolus, mais qui m'ont causées de sacrées migraines.

Ce que j'essaie de dire c'est que pour moi il n'y a rien que l'on ne puisse surmonter, sauf si l'on abandonne.
Enfin, pour ce qui est du bouton, ça y est, il est revenu.

Cette anomalie était due juste au fait que la connexion n'était pas complètement établie avec la plateforme.
Dans cette situation, je peux vous écrire, vous lire et même vous envoyer des messages mais, il faut que je valide ensuite la connexion et là, tout est à nouveau sous contrôle...

Voilà pour les news;
Bien à vous.

Slav
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 111
Membres
112 662
dernier inscrit
lou75