Commandbar erreur 400

Bonjour,

J'ai récupéré un code permettant de créer un menu contextuel (remplissage des cellules plus rapide que la méthode avec menu déroulant et récupérant automatique des couleurs des shapes).

Seulement, j'ai très souvent, pas à chaque fois l'erreur 400

capture capture

Et je dois cliquer sur Ok pour continuer.

Avez-vous, svp, une solution pour gérer le clic sur OK dans le code. Genre un gestion d'erreur.

Ou bien une autre solution voire carrément une qui n'utilise pas cette méthode des commandes Bar.

Ci-après le code et le fichier joint.

Merci pour votre aide

Dim Barre As CommandBar
Sub AfficheMenu()
    On Error Resume Next
    CommandBars("BarreColoriage").Delete
    'On Error GoTo 0
    ReDim ListeShapes(1 To Sheets("couleurs").Shapes.Count)
    i = 1
    For Each s In Sheets("couleurs").Shapes
      ListeShapes(i) = s.Name
      i = i + 1
    Next s
    Set Barre = Application.CommandBars.Add("barreColoriage", msoBarPopup)
    For bb = 1 To UBound(ListeShapes)
        Set myshp = Sheets("Couleurs").Shapes(ListeShapes(bb))
        myshp.Copy
        texte = Sheets("couleurs").Shapes(ListeShapes(bb)).DrawingObject.Caption

       With Barre.Controls.Add(msoControlButton, 1, ListeShapes(bb), , True)
            .PasteFace
            .Caption = Sheets("Couleurs").Shapes(ListeShapes(bb)).DrawingObject.Caption
            .OnAction = "Coloriage(" & bb & ")"
               End With
        Next bb

    Barre.ShowPopup
    Set Barre = Nothing
    'Call Recolorier
End Sub
Sub Coloriage(p)
    Application.ScreenUpdating = False
    'couleur = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).Fill.ForeColor
    texte = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).DrawingObject.Caption
    If texte = "Efface" Then
      texte = ""
       With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
       End With
    Else
      Selection.Interior.Color = couleur
    End If
    Selection.Value = texte 'Left(texte, 4)
    Application.ScreenUpdating = True
End Sub

Bonjour toutes et tous

1/ a)tu as mis en commentaire avec l'apostrophe devant " ' " ceci:

'couleur = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).Fill.ForeColor

donc:

  '  Else
 '     Selection.Interior.Color = couleur

ce qui donne:

Sub Coloriage(p)
    Application.ScreenUpdating = False
    'couleur = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).Fill.ForeColor
    texte = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).DrawingObject.Caption
    If texte = "Efface" Then
      texte = ""
       With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
       End With
   ' Else
    '  Selection.Interior.Color = couleur
    End If
    Selection.Value = texte 'Left(texte, 4)
    Application.ScreenUpdating = True
End Sub

b ) texte , bb ne sont pas déclarés


2/ peut être aussi à déclarer les variables ( i, j k et s ne sont pas déclarés ) ' pas certain

Dim i As String 'etc

@à voir avec un expert d'Excel car, ils te donneront de meilleurs conseils, merci d'avance

crdlt,

André

Bonjour,

Merci pour votre réponse .J'ai malheureusement la même erreur en faisant les corrections que vous avez données.

Cordialement

Bonjour toutes et tous

1/ a)tu as mis en commentaire avec l'apostrophe devant " ' " ceci:

'couleur = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).Fill.ForeColor

donc:

  '  Else
 '     Selection.Interior.Color = couleur

ce qui donne:

Sub Coloriage(p)
    Application.ScreenUpdating = False
    'couleur = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).Fill.ForeColor
    texte = Sheets("Couleurs").Shapes(Barre.Controls(p).Parameter).DrawingObject.Caption
    If texte = "Efface" Then
      texte = ""
       With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
       End With
   ' Else
    '  Selection.Interior.Color = couleur
    End If
    Selection.Value = texte 'Left(texte, 4)
    Application.ScreenUpdating = True
End Sub

b ) texte , bb ne sont pas déclarés


2/ peut être aussi à déclarer les variables ( i, j k et s ne sont pas déclarés ) ' pas certain

Dim i As String 'etc

@à voir avec un expert d'Excel car, ils te donneront de meilleurs conseils, merci d'avance

crdlt,

André

Bonjour toutes et tous

et en faisant tout simplement une mise en forme conditionnelle (MFC)

@tester:

tu sélectionnes les colonnes de E jusqu'à L (E,F,G,H,I,J,K et L)

dans le menu 'Accueil' puis clic sur, Mise en forme conditionnelle, dans la liste déroulante tu choisis 'Gérer les Règles' (une mini fenêtre apparaît)

ensuite, 'Nouvelle Règle' (une mini fenêtre apparaît) =clic sur=> 'Appliquer une mise en forme uniquement aux cellules qui contiennent' dans Valeur de la cellule choisir sur cette mini liste déroulante 'Texte spécifique' à droite marqué Paris (par exemple) choisir le format de remplissage et de couleur de texte puis ok puis appliquer est effectuer cette tâche pour les autres Villes Nantes, Marseille etc. et les autres, Cong. etc.

crdlt, André

ztest2

Merci André13 pour votre réponse mais en fait je ne veux pas passer par la MFC, je veux l'éviter côute que coûte.

Merci

Bonjour toutes et tous

et en faisant tout simplement une mise en forme conditionnelle (MFC)

@tester:

tu sélectionnes les colonnes de E jusqu'à L (E,F,G,H,I,J,K et L)

dans le menu 'Accueil' puis clic sur, Mise en forme conditionnelle, dans la liste déroulante tu choisis 'Gérer les Règles' (une mini fenêtre apparaît)

ensuite, 'Nouvelle Règle' (une mini fenêtre apparaît) =clic sur=> 'Appliquer une mise en forme uniquement aux cellules qui contiennent' dans Valeur de la cellule choisir sur cette mini liste déroulante 'Texte spécifique' à droite marqué Paris (par exemple) choisir le format de remplissage et de couleur de texte puis ok puis appliquer est effectuer cette tâche pour les autres Villes Nantes, Marseille etc. et les autres, Cong. etc.

crdlt, André

Bonjour,

Ci-joint ton fichier très légèrement corrigé ...

Cela devrait te débarrasser du bug ... A tester ...

Cela dit, en termes de rapidité ... il me semble qu'une macro évènementielle pourrait rivaliser favorablement...

avec la Commandbar ... .... et la manipulation des Shapes ... qui n'ajoute pas grand-chose ...

J'ai toujours l'erreur 400.

Cependant, je pense que cela vient (depuis le le début) de ma version excel 2013, je viens de tester sur 2016, et je n'ai pas eu cette erreur .

Merci

Bonjour,

Ci-joint ton fichier très légèrement corrigé ...

Cela devrait te débarrasser du bug ... A tester ...

Cela dit, en termes de rapidité ... il me semble qu'une macro évènementielle pourrait rivaliser favorablement...

avec la Commandbar ... .... et la manipulation des Shapes ... qui n'ajoute pas grand-chose ...

Re,

Je dois t'avouer que je n'arrive pas à répliquer ton erreur ...

Cela dit, aucune variable n'était déclarée ... et je continue de penser que Selection_Change n'est pas l'idéal avec la gestion de Shapes uniquement pour colorier des cellules ...

Concrètement que se passe-t-il pour rallonger ta liste de ' validations ' ...?

Je viens de remplir en test une centaine de ligne ( sous excel 2016) et je n'ai pas rencontré un seul souci.

Pour rallonger la liste de validation, on va dans la feuille couleur et on rajoute un shape avec sa couleur et son libellé.

Sinon j'aurai une autre demande si vous me le permettez:

je voudrais m'inspirer de ce menu contextuel, non pas pour colorer mais juste renseigner des cellules (donc en se passant des listes déroulantes).Par exemple, j'aurais dans une colonne d'une feuille un liste : à faire, à classer,à déléguer, à revoir, à envoyer) et après un menu contextuel qui reprend l'ensemble de cette liste que je peux coller dans une cellule après sélection depuis le menu contextuel.

Pensez-vous que cela soit possible ? Pouvez-vous m'aider svp ?

Merci

Re,

Je dois t'avouer que je n'arrive pas à répliquer ton erreur ...

Cela dit, aucune variable n'était déclarée ... et je continue de penser que Selection_Change n'est pas l'idéal avec la gestion de Shapes uniquement pour colorier des cellules ...

Concrètement que se passe-t-il pour rallonger ta liste de ' validations ' ...?

Re,

Pa rapport à ta nouvelle question

.Par exemple, j'aurais dans une colonne d'une feuille un liste : à faire, à classer,à déléguer, à revoir, à envoyer) ...

et après un menu contextuel qui reprend l'ensemble de cette liste que je peux coller dans une cellule après sélection depuis le menu contextuel.

J'arrive à comprendre la première partie qui concerne les listes déroulantes ... mais pas la seconde partie " du menu contextuel " ...

Dans le fichier avec les villes à coller qui s'obtient en faisant un clic droit, je voudrais disposer de la même chose : au clic droit obtenir une liste de choix :à faire, à classer,à déléguer, à revoir, à envoyer. cette liste a pour source une colonne d'une feuille de mon classeur.

En résumé, j'ai une colonne qui s'appelle "Actions", au lieu de le remplir via une liste déroulante, je voudrais la remplir en faisant un clic droit qui ouvre le menu contextuel et j'ai juste à choisir l'action qu'il me faut qui se mettra sur la cellule active.

Merci

Re,

Pa rapport à ta nouvelle question

.Par exemple, j'aurais dans une colonne d'une feuille un liste : à faire, à classer,à déléguer, à revoir, à envoyer) ...

et après un menu contextuel qui reprend l'ensemble de cette liste que je peux coller dans une cellule après sélection depuis le menu contextuel.

J'arrive à comprendre la première partie qui concerne les listes déroulantes ... mais pas la seconde partie " du menu contextuel " ...

Re,

Ci-joint ton fichier test ...

Le double-clic dans la Colonne D pour les 'Actions ' ...

En espèrant que cela t'aide

C'est presque ce je souhaitais, seulement comme les actions à faire évoluent et l'utilisateur du fichier ne souhaite pas rentrer dans le code, il ne sait pas meme pas comment faire. ET surtout je souhaite cette technique (double clic) pour renseigner autres choses plus dynamique dans le temps.

Donc l'idéal serait de pouvoir passer par une colonne où on mettrait "action 1, action 2...)

Merci

Re,

Ci-joint ton fichier test ...

Le double-clic dans la Colonne D pour les 'Actions ' ...

En espèrant que cela t'aide

Re,

S'agit-il d'avoir les six choix actuellement prévus dont les libellés changeraient ...

ou

S'agit-il d'avoir une nombre toujours changeant de choix dont les libellés changeraient ...?

En réalité ce sont les deux cas:

  • les libellés peuvent changer
  • Et le nombre peuvent varier,

J'ai essayé de faire ça et il donne bien le contenu de la cellule A1 mais je voudrais avoir une liste qui prendrait toutes les données de la colonne A. la couleur n'est pas importante je peux tout mettre en .Interior.Color = RGB(255, 255, 255). C'est même ce que je préfère.

Private Sub CommandButton1_Click()
    With ActiveCell
        '.Value = Me.CommandButton1.Caption
         .Value = ThisWorkbook.Sheets("Feuil1").Range("A1").Value
        .Interior.Color = RGB(255, 255, 255)
    End With
    Unload Me
End Sub

Après l'idéal c'est que cela sort comme le menu contextuel des villes car il peut contenir une quinzaine d'éléments.

Merci beaucoup

Re,

S'agit-il d'avoir les six choix actuellement prévus dont les libellés changeraient ...

ou

S'agit-il d'avoir une nombre toujours changeant de choix dont les libellés changeraient ...?

Rechercher des sujets similaires à "commandbar erreur 400"