Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2011, 19h09   #1
Membre habitué
 
Avatar de CODYCO
 
Homme
Webplanneur
Inscription : avril 2009
Messages : 141
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webplanneur
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 141
Points : 144
Points : 144
Par défaut Call back xml et vba

Bonjour à tous!

De nouveau je sollicite votre aide, bien entendu apres avoir fait moulte recherche sur notre fofo préféré et nénette.

Voila j'ai adapté mon code vba 2003 en 2010.
Sous 2003 je créer une barre d'outils personnel, adapté avec le ruban sous xml pour 2010. jusque là tout va bien.

Sauf que sous vba 2003 certain de mes boutons avaient l'attribut .enable= false en fonction de la navigation et reprenez l'attribut "True" à certain moment ceci afin de guider l'utilisateur.

Sous 2010 cette attribut ce gere dès le xml avec "getenable" et via le callback coreespondant.

Mais voila j'ai un peu de mal avec ces codes vba, je ne vois pas trop comment changer l'attribut du bouton pendant l'éxecution globale de mon code sans passer par callback Sub correspondant au bouton.

J'ai le meme probleme avec une label.edit dont je veux modifier le label dynamiquement pendant le déroulement de ma macro. Je m'en sert pour afficher des infos de déroulement et d'avancement. J'ai bien trouver le getlabel mais meme soucis.

Merci de vos lumières...
CODYCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 20h56   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Le mieux je pense est de déclarer une variable de porté Module ( tu places les déclarations dans un module)
Code :
1
2
Public Bouton1Enabled as Boolean
Public objRuban As IRibbonUI
Tu devrais déjà avoir le callback Load
Code :
1
2
3
4
'Callback for customUI.onLoad
Sub RubanCharge(ribbon As IRibbonUI) 'le nom varie en fonction de ton choix dans le code xml
Set objRuban = ribbon
End Sub
Ensuite dans le Callback du bouton1 tu fais
Code :
1
2
3
Sub Bouton1_Enabled(control As IRibbonControl, ByRef returnedVal)
    returnedVal = Bouton1Enabled
End Sub

Ensuite dans ton code, pour modifier l'etat du bouton
Code :
1
2
3
4
5
6
'[...] Ton code
Bouton1enabled = False
'Tu rafraîchi le ruban
objRuban.InvalidateControl "Bouton1"
 
'[...]Suite de ton code
Fait un essai comme ça.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 21h04   #3
Membre habitué
 
Avatar de CODYCO
 
Homme
Webplanneur
Inscription : avril 2009
Messages : 141
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webplanneur
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 141
Points : 144
Points : 144
Par défaut enfin

Je te remercie pour ton unique réponse, je veux bien comprendre que le mariage du xml et vba ne pasionne pas encore les foules mais bientot tout le monde devra s'y coller sous peine de rester sous 2003 à vie.

Je comprend déjà mieux ton explication que toutes celles que j'ai pu trouver sur le net.

Je test ca dès demain matin au bureau... et reviendrais pour un merci ou de plus ample renseignement.
CODYCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 21h41   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
Si des fois tu ne l'avais pas trouvé il y a ce très bon tutoriel de Silkyroad au sujet du ruban.
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 13h34   #5
Membre habitué
 
Avatar de CODYCO
 
Homme
Webplanneur
Inscription : avril 2009
Messages : 141
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webplanneur
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 141
Points : 144
Points : 144
Par défaut ARf

Qwazerty merci égallement,

Oui je suis allé voir le tuto qui m'a en grande partie fomé sur l'ensemble.
Cependant je n'obtiens pas le résultat attendu, je te donne les morceau de code pour etre plus claire...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<!-- Indiquez True pour masquer tous les autres onglets standards-->
<ribbon startFromScratch="true">
 
<tabs>
  <!-- Crée un onglet personnalisé: -->
  <!-- Utilisez insertAfterMso="NomOngletPrédéfini" pour préciser l'emplacement de l'onglet-->
  <tab id="Navigation" label="Navigation" visible="true">
 
	<!-- Crée un groupe -->  
    <group id="Barre_Info" label="Barre Information">
	<labelControl id="info" getLabel="ValeurInfo" />
    </group>
Ca c'est la partie de mon xml...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
Option Explicit
Public info As Booléan
Public MonRuban As IRibbonUI
 
Sub RubanCharge(ribbon As IRibbonUI)
Set MonRuban = ribbon
info = "Veuillez importez votre fichier CSV à l'aide du bouton IMPORT" 'étant le message de départ que je veux afficher et ensuite modifié...
MonRuban.InvalidateControl "info"
End Sub
 
'Callback for info getLabel
Sub ValeurInfo(control As IRibbonControl, ByRef returnedVal)
returnedVal = info
End Sub
 
'et cette partie étant celle qui déclenche mon action et doit aussi rafraichir le label de la barre info...
'Callback for Import onAction
Sub Import(control As IRibbonControl)
Call ImportCSV
info = "test la modif affichage"
'Tu rafraîchi le ruban
MonRuban.InvalidateControl "info"
End Sub
et pour le moment je n'y parviens pas...
CODYCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 18h40   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
Ha ben non dans le cas du label il te faut une variable de type string

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
Public info As String 'Attention Boolean ne prend pas d'accent ;)
Public MonRuban As IRibbonUI
 
Sub RubanCharge(ribbon As IRibbonUI)
Set MonRuban = ribbon
info = "Veuillez importez votre fichier CSV à l'aide du bouton IMPORT" 'étant le message de départ que je veux afficher et ensuite modifié...
MonRuban.InvalidateControl "info"
End Sub
 
'Callback for info getLabel
Sub ValeurInfo(control As IRibbonControl, ByRef returnedVal)
returnedVal = info
End Sub
 
'et cette partie étant celle qui déclenche mon action et doit aussi rafraichir le label de la barre info...
'Callback for Import onAction
Sub Import(control As IRibbonControl)
Call ImportCSV
info = "test la modif affichage"
'Tu rafraîchi le ruban
MonRuban.InvalidateControl "info"
End Sub
Essai comme ça
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 06h17   #7
Membre habitué
 
Avatar de CODYCO
 
Homme
Webplanneur
Inscription : avril 2009
Messages : 141
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webplanneur
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 141
Points : 144
Points : 144
J'avais déjà penser à ca et j'avais déjà essayer et cela ne marcha pas!?
C'est ca qui est fort, avec boolean si tu lui change sa valeur ca marche, mais pas sur une string.
CODYCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 08h11   #8
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

il manque le callback onLoad pour exécuter RubanCharge :
Code xml :
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="RubanCharge">
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/12/2011, 08h36   #9
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
[Edit]Je n'avais pas vu ta réponse Arkham46... bien vu![/Edit]
Je viens de faire des essais et ça fonctionne très bien chez moi
Place un fichier démo pour voir ce qui cloche.
Seul bémol, si tu mets a jour à partir d'un UserForm, le ruban ne se met à jour qu'a la fermeture du UserForm...
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 08h40   #10
Membre habitué
 
Avatar de CODYCO
 
Homme
Webplanneur
Inscription : avril 2009
Messages : 141
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webplanneur
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 141
Points : 144
Points : 144
Trou du c.. que je suis
Je viens de lire ton message mais je me suis rendu compte de la meme connerie ce matin. Comme quoi avec une bonne nuit de sommeil parfois les choses nous apparaissent différement.

Un grand merci encore à tous, je déploie tous mes éléments et je reviens posté la totalité du code avant de fermé le post, ca peux servir.
CODYCO est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h34.


 
 
 
 
Partenaires

Hébergement Web