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

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
 

job75

XLDnaute Barbatruc
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
'---
 

dionys0s

XLDnaute Impliqué
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 ? :confused:

Merci d'avance :)

dionys0s
 

job75

XLDnaute Barbatruc
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+
 

Discussions similaires

Réponses
0
Affichages
188

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12