Erreur d'execution '9' lors d'un lancement de macro
Zitounami
Messages postés4Date d'inscriptionmercredi 22 octobre 2008StatutMembreDernière intervention 3 novembre 2008
-
22 oct. 2008 à 17:16
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 2010
-
4 nov. 2008 à 01:51
Bonjour à tous,
Voilà j'ai un soucis dans une macro excel qui me met l'erreur d'execution '9'
Lorsque je regarde le script j'ai ça :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Assainissement").Visible = False
End Sub
Private Sub Workbook_Open()
MsgBox "Bienvenue dans l'assainissement comptable des comptes de classe 3"
Application.CommandBars("Assainissement").Visible = True
'création du fichier à partir de l'extraction ICE
Application.CommandBars("Assainissement").Controls(1).OnAction = "Creation_Fichier"
'recherche et élimination des doublons
Application.CommandBars("Assainissement").Controls(2).OnAction = "Doublons"
'transfert des lignes émargées
Application.CommandBars("Assainissement").Controls(3).OnAction = "transfert"
'Calcul du solde sur l'ensemble des comptes
Application.CommandBars("Assainissement").Controls(4).OnAction = "RECH_ELEM_CAL"
'Emarger
Application.CommandBars("Assainissement").Controls(5).OnAction = "EMARGE"
'commentaire
Application.CommandBars("Assainissement").Controls(6).OnAction = "Commentaire"
'recherche
Application.CommandBars("Assainissement").Controls(7).OnAction = "RECH_ELEM"
'mettre en évidence les "gros contrats"
Application.CommandBars("Assainissement").Controls(8).OnAction = "mettre_couleur"
End Sub
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 23 oct. 2008 à 02:52
Bonjour
Comme je ne retiens pas par coeur les erreurs VBA j'ai dû écrire un bout de code pour savoir que l'erreur 9, c'est L'indice n'appartient pas à la sélection. Je t'en veux pas, zitounami, mais si tu veux de l'aide, il faut pas oublier ce genre de détail.
J'ai une sombre nouvelle pour toi, Zitounami, et tu vas devoir être courageux : il semble que la collection Controls de ton commandbar("Assainissement") soit vide.
Pour le savoir, exécute le sub suivant, qui va te lister les contrôles :
Sub listeCommandBarControl()
Dim myItem As CommandBarControl
For Each myItem In CommandBars("Assainissement").Controls
MsgBox myItem.Caption
Next
End Sub
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 24 oct. 2008 à 03:58
Bonjour
Je ne sais pas du tout si on peut créer un commandBar sans passer par VBA.
Voici une démo de gestion de commandBar.
Elle crée une barre de commande flottante et temporaire avec deux contrôles :
une listBox et un bouton.
Peux-tu la tester ?
Dim boissons As Variant
Sub accoudé_au_bar()
boissons = Array("Pastis", "Whisky", "Vodka")
Dim cb As CommandBar, cmdBarCtl As CommandBarControl
Dim i As Integer
supprimeCommandBar
' ajoute une nouvelle barre de commande
Set cb = CommandBars.Add(Name:="L'Assommoir", _
Position:=msoBarFloating, temporary:=True)
' ajoute un controle listBox à la barre de commande
Set cmdBarCtl = cb.Controls.Add(Type:=msoControlDropdown, temporary:=True)
With cmdBarCtl
.Width = 100
.Caption = "Interdit aux moins de 18 ans"
For i = 0 To UBound(boissons)
.AddItem boissons(i), i + 1
Next
.DropDownLines = 10
.DropDownWidth = 100
.ListIndex = 0
.OnAction = "surSelectionBoisson"
End With
' ajoute un bouton à la barre de commande
Set cmdBarCtl = cb.Controls.Add(Type:=msoControlButton, temporary:=True)
With cmdBarCtl
.BeginGroup = True
.Caption = "Brève de comptoir"
.FaceId = 3
.OnAction = "histoire"
End With
With cb
.Visible = True
.Protection = msoBarNoChangeVisible
.Width = 200
End With
End Sub
Sub surSelectionBoisson() ' code evenementiel associé à la listBox
Dim ind As Byte
ind = CommandBars("L'Assommoir").Controls(1).ListIndex - 1
MsgBox "Vous avez commandé : " & boissons(ind)
End Sub
Sub histoire() ' code evenementiel associé au bouton
MsgBox "Les bons crus font les bonnes cuites", , "Pensée profonde"
End Sub
Sub supprimeCommandBar() ' suppression de la commandBar
Dim myItem As CommandBar
For Each myItem In CommandBars
If myItem.Name = "L'Assommoir" Then myItem.Delete
Next
End Sub
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Zitounami
Messages postés4Date d'inscriptionmercredi 22 octobre 2008StatutMembreDernière intervention 3 novembre 2008 27 oct. 2008 à 12:19
Bonjour,
J'ai testé ta commandbar !
Donc ca me créé bien la barre de commande flotante avec une listebox (vodka whisky pastis) et quand on en selectionne une ca nous dis bien qu'on l'a selectionnée.
Et si on clic sur le button 'enregistrer' ca nous met 'les bons crus font les bonnes cuites'
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 28 oct. 2008 à 00:41
Bonjour zitounami
D'après ta description, l'exemple que je t'ai envoyé fonctionne bien ; tu es donc en mesure de créer un CommandBar et de lui attribuer des listes déroulantes et des boutons, et d'appeler des procédures... C'est à peu près tout ce qu'on attend d'un CommandBar. Pourrais-tu préciser ce que tu veux dire par j'ai pas réussi à avoir d'autres fonctions, stp ?
Zitounami
Messages postés4Date d'inscriptionmercredi 22 octobre 2008StatutMembreDernière intervention 3 novembre 2008 3 nov. 2008 à 10:01
Bonjour Orohena,
Et bien en fait, dans le script que tu m'as envoyé j'appercois des "Pensée profonde", "Breve de comptoir", "Histoire".. Que je n'ai pas vu ou réussi à utiliser.
Sinon, apparement le script fonctionne sur d'autre poste, connaitrais tu un moyen de récupérer cette fameuse commande barre, car les gens utilisent la même macro mise sur le réseau, néanmoins elle fonctionne pour certains postes et pas d'autre.
Ou il y a t'il un fichier à récupérer sur le system pour que les 2 excels soit similaires ? (Dans le sens ou ca fera comme une copie d'un Excel à un autre).
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 4 nov. 2008 à 01:51
Hello Zitounami,
Ne te fais pas de souci pour ce que tu appelles les autres fonctions. Ce sont des infos-bulles, des titres de boîtes de message, et je pense que tu ne les a pas vu passer. De toute façon elles sont tout à fait accessoires.
Si je comprends bien, tu veux copier les commandbars permanentes d'une application Excel pour les coller dans l'application d'un autre poste sur le réseau.
Si c'est cela, je ne sais pas comment faire. En plus, ça me paraît très compliqué, alors que ma solution consistant à créer une commandbar temporaire est simple et orthodoxe. Qu'est-ce qui te pose problème dans mon code, et qui t'empêche de le réutiliser pour créer ta commandbar assainissement ?