Valider automatiquement Inputbox VBA

Y compris Power BI, Power Query et toute autre question en lien avec Excel
O
OncleSid
Jeune membre
Jeune membre
Messages : 24
Inscrit le : 10 janvier 2020

Message par OncleSid » 13 janvier 2020, 20:18

Bonjour,

Je débute en VBA et je souhaite créer un bouton me permettant de remplacer une mise en forme conditionnelle sur les cellules sélectionnées par une nouvelle couleur de fond.

J'ai réussi en combinant deux codes trouver sur le net : le premier pour supprimer la MFC, le deuxième changer la couleur de fond des cellules.
MFCex2.xlsm
(213.09 Kio) Téléchargé 1 fois
Cela fonctionne mais j'ai une demande de validation de la plage sélectionnée à chaque manip qui m'ennuie.

Après des recherches sur le net j'ai vu le code :
Application.DisplayAlerts = False 
et
SendKeys("{ENTER}")
Mais je ne parviens à faire marcher aucun d'eux pour retirer cette pop up (j'ai essayé de l'insérer entre chacun ligne de code une à une au cas où ^^).

Voici le code VBA brut :
Sub changement()
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
    Set xRg = Application.InputBox("", "", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    For Each xCell In xRg
        With xCell
            .Font.FontStyle = .DisplayFormat.Font.FontStyle
            .Font.Strikethrough = .DisplayFormat.Font.Strikethrough
            .Interior.Pattern = .DisplayFormat.Interior.Pattern
            If .Interior.Pattern <> xlNone Then
                 .Interior.PatternColorIndex = .DisplayFormat.Interior.PatternColorIndex
                .Interior.Color = .DisplayFormat.Interior.Color
            End If
            .Interior.TintAndShade = .DisplayFormat.Interior.TintAndShade
            .Interior.PatternTintAndShade = .DisplayFormat.Interior.PatternTintAndShade
        End With
    Next

    xRg.FormatConditions.Delete

   'Colorer le fond des cellules sélectionnées
    Selection.Interior.ColorIndex = 42

End Sub
Merci d'avance et bonne soirée !
Avatar du membre
GVIALLES
Membre dévoué
Membre dévoué
Messages : 815
Appréciations reçues : 73
Inscrit le : 28 novembre 2017
Version d'Excel : 2016, 360
Téléchargements : Mes applications

Message par GVIALLES » 17 janvier 2020, 14:58

Bonjour OncleSid,

Je te propose de modifier le code par :
Sub changement()
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      Set xRg = ActiveWindow.RangeSelection
    Else
      Set xRg = ActiveSheet.UsedRange
    End If
    'Set xRg = Application.InputBox("", "", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    For Each xCell In xRg
        With xCell
            .Font.FontStyle = .DisplayFormat.Font.FontStyle
            .Font.Strikethrough = .DisplayFormat.Font.Strikethrough
            .Interior.Pattern = .DisplayFormat.Interior.Pattern
            If .Interior.Pattern <> xlNone Then
                 .Interior.PatternColorIndex = .DisplayFormat.Interior.PatternColorIndex
                .Interior.Color = .DisplayFormat.Interior.Color
            End If
            .Interior.TintAndShade = .DisplayFormat.Interior.TintAndShade
            .Interior.PatternTintAndShade = .DisplayFormat.Interior.PatternTintAndShade
        End With
    Next

    xRg.FormatConditions.Delete

   'Colorer le fond des cellules sélectionnées
    Selection.Interior.ColorIndex = 42

End Sub
Cordialement,

Gérard
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message