Neutraliser la procédure du bouton annuler d'un InputBox typé 8 (RefEdit)

  • Initiateur de la discussion Initiateur de la discussion dionys0s
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dionys0s

XLDnaute Impliqué
ReBonjour le forum

J'ai fait des recherches et ai essayé les solutions proposées (If Not truc Is Nothing Then ... Else Exit Sub, ou encore If MaRef = "" Then Exit Sub) mais rien de marche. Quand je clique sur annuler sur mon InputBox, ma macro plante invariablement. Je pense que c'est parce que mon InputBox est typé 8, c'est à dire qu'il me sert de sélecteur de cellule(s). Ou alors j'ai du yahourt dans les yeux et le cerveau. Ou les deux.

Enfin si une âme charitable a déjà eu affaire à ce problème et a une solution à me proposer, je suis preneur.

Le code incriminé :
Code:
Sub Modifier_les_couleurs_d_une_cellule()    'OK

    Dim CoulPol As Long
    Dim RougePol As Integer
    Dim VertPol As Integer
    Dim BleuPol As Integer

    Dim CoulFond As Long
    Dim RougeFond As Integer
    Dim VertFond As Integer
    Dim BleuFond As Integer

    Dim CelluleCible As Range

        With ActiveCell
            CoulPol = .Font.Color
            CoulFond = .Interior.Color
        End With
    
        RougePol = CouleurRGB("Rouge", CoulPol)
        VertPol = CouleurRGB("Vert", CoulPol)
        BleuPol = CouleurRGB("Bleu", CoulPol)
        RougeFond = CouleurRGB("Rouge", CoulFond)
        VertFond = CouleurRGB("Vert", CoulFond)
        BleuFond = CouleurRGB("Bleu", CoulFond)
    
        Set CelluleCible = Application.InputBox(Prompt:="Sélectionner la plage à colorer (police + remplissage", Title:="Sélection d'une plage", Type:=8)

        If RougeFond + VertFond + BleuFond = 3 * 255 Then
            CelluleCible.Font.Color = RGB(RougePol, VertPol, BleuPol)
        Else
            With CelluleCible
                .Font.Color = RGB(RougePol, VertPol, BleuPol)
                .Interior.Color = RGB(RougeFond, VertFond, BleuFond)
            End With
        End If

End Sub

Bonne soirée à toutes-zé-à-tous
 
Re : Neutraliser la procédure du bouton annuler d'un InputBox typé 8 (RefEdit)

Bonsoir dionys0s,

Il faut passer par un On Error Resume Next :

Code:
Dim CelluleCible As Range
'---
On Error Resume Next
Set CelluleCible = Application.InputBox(Prompt:="Sélectionner la plage à colorer (police + remplissage", Title:="Sélection d'une plage", Type:=8)
On Error GoTo 0
If CelluleCible Is Nothing Then Exit Sub 'ou autre chose
'---
 
Re : Neutraliser la procédure du bouton annuler d'un InputBox typé 8 (RefEdit)

Bonjour Job, bonjour le forum

N'y a-t-il aucun moyen de fonctionner sans le On Error ?
Comment cela se fait-il que les méthodes qui marchent pour un InputBox classique ne fonctionnent pas avec un InputBox typé RefEdit ? 😕

Merci d'avance 🙂

dionys0s
 
Re : Neutraliser la procédure du bouton annuler d'un InputBox typé 8 (RefEdit)

Bonjour,

L'InputBox "classique" (sans Application.) renvoie du texte facile à contrôler.

Ici elle doit renvoyer un objet Range, c'est bien autre chose.

Je n'ai pas d'autre solution, mais faut pas avoir peur de On Error Resume Next.

Il est très utile pour contrôler les erreurs.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
241
Réponses
4
Affichages
179
Réponses
1
Affichages
348
Retour