IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

PB avec un inputbox [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut PB avec un inputbox
    Bonjour,

    J'ai créé une macro qui met une mise en forme conditionnelle dans une plage de cellule en fonction d'un tableau (Min et Max avec les couleurs).
    Ma macro demande de sélectionner le tableau avec les valeurs min et max et leurs couleurs associées, puis de sélectionner la plage de cellule sur lequel on va appliquer la MEF conditionnelle.
    Ma macro marche parfaitement, je peux sélectionner ma plage de cellule avec les touches ctrl+shift et les flèches.
    Mais hier j'ai créér une macro avec un formulaire (qui me sert de menu) qui regroupe plusieurs autres macros.
    Depuis je ne peux plus faire ma sélection avec les touches Ctrl+Shift + flèches, je dois sélectionner ma plage avec la souris. Quand on a 200 colonnes c'est chiant.

    Ma macro menu comporte 7 modules (1 par macro + 1 pour les fonctions communes + 1 qui lance le formulaire)
    Mon module de lancement comporte unique un show pour lancer le formulaire.

    Mon formulaire à 5 checkbox et 1 bouton.
    Voici son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    Option Explicit
     
    'Déclaration des variables
    Public Choix_PDC As Integer
    Public Choix_DataMap As Integer
    Public Choix_Stat As Integer
     
    Public a As Integer
    Public b As Integer
    Public c As Integer
    Public h As Integer
    Public i As Integer
    Public j As Integer
    Public k As Integer
    Public l As Integer
    Public m As Integer
    Public q As String
    Public s As Integer
    Public t As String
    Public Z As Integer
     
    Public Deb As Integer
     
    Public nbl As Integer
    Public nbli As Integer
    Public nbli2 As Integer
    Public nbli3 As Integer
    Public nblipdc As Integer
     
    Public Col As Integer
    Public NbCol As Integer
     
    Public WS_Count As Integer
     
    Public cp As Integer
    Public cp2 As Integer
     
    Public score As Integer
    Public score2 As String
     
    Public rep As Integer
    Public repST As String
     
    Public RGBC As Integer
    Public Red As Integer
    Public Green As Integer
    Public Blue As Integer
     
    Public Theme As Object
    Public LigDeb_Theme As Long
    Public Nom_Onglet_Theme As Range
    Public ww As Range
     
    Public MEF As Object
    Public ColDeb_MEF As Integer
    Public ColFin_MEF As Integer
    Public LigDeb_MEF As Long
    Public LigFin_MEF As Long
    Public Nom_Onglet_MEF As Range
     
    Public DATA As Object
    Public ColDeb_DATA As Integer
    Public ColFin_DATA As Integer
    Public LigDeb_DATA As Long
    Public LigFin_DATA As Long
    Public Nom_Onglet_DATA As Range
     
    Public REF As Object
    Public ColDeb_REF As Integer
    Public LigDeb_REF As Long
    Public Nom_Onglet_REF As Range
     
    Public debut As Date
    Public temps As Date
    Public fin As Date
    Sub DataMap_Click()
     
    If DataMap.Value = True Then
        PDC.Value = False
        Verif_Code.Value = False
        Suppr_Conserv_Couleur.Value = False
        MEF_Conditionnel.Value = False
    End If
     
    End Sub
     
    Sub MEF_Conditionnel_Click()
     
    If MEF_Conditionnel.Value = True Then
        DataMap.Value = False
        Verif_Code.Value = False
        Suppr_Conserv_Couleur.Value = False
        PDC.Value = False
    End If
     
    End Sub
     
    Sub PDC_Click()
     
    If PDC.Value = True Then
        DataMap.Value = False
        Verif_Code.Value = False
        Suppr_Conserv_Couleur.Value = False
        MEF_Conditionnel.Value = False
    End If
     
    End Sub
    Sub Suppr_Conserv_Couleur_Click()
     
    If Suppr_Conserv_Couleur.Value = True Then
        DataMap.Value = False
        Verif_Code.Value = False
        PDC.Value = False
        MEF_Conditionnel.Value = False
    End If
     
    End Sub
     
    Private Sub UserForm_Activate()
        DataMap.Value = False
        Verif_Code.Value = False
        PDC.Value = False
        MEF_Conditionnel.Value = False
        Suppr_Conserv_Couleur.Value = False
    End Sub
     
    Sub Verif_Code_Click()
     
    If Verif_Code.Value = True Then
        DataMap.Value = False
        PDC.Value = False
        Suppr_Conserv_Couleur.Value = False
        MEF_Conditionnel.Value = False
    End If
     
    End Sub
    Sub Lancement_Click()
     
    If PDC.Value = True Then
    UserForm1.Hide
    Call Module_PDC.PDC
    End If
     
    If DataMap.Value = True Then
    UserForm1.Hide
    Call Module_DataMap.DataMap
    End If
     
    If Suppr_Conserv_Couleur.Value = True Then
    UserForm1.Hide
    Call Module_Suppr_Conserv_Couleur.Suppr_Conserv_par_Couleur
    End If
     
    If Verif_Code.Value = True Then
    UserForm1.Hide
    Call Module_Verif_Code.Verif_Code
    End If
     
    If MEF_Conditionnel.Value = True Then
    UserForm1.Hide
    Call Module_MEF_Conditionnel.MEF_Conditionnel
    End If
     
    End Sub
    Voici maintenant ma macro de MEF Conditionnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Function MEF_Conditionnel()
     
    debut = Time
     
    Choix_Stat = MsgBox("Voulez vous exécuter la macro de Mise En Forme Conditionnelle (Uniquement les couleurs) ?", vbYesNo)
     
    If Choix_Stat = 7 Then
        MsgBox ("Macro annulée")
        Exit Function
    End If
     
    If Choix_Stat = 6 Then
     
    'Programme MEF_VITRAUX_STAT
        On Error Resume Next
        Set MEF = Application.InputBox(prompt:="Sélectionnez la plage de cellules pour la MEF Conditionnelle, juste le Min et le Max", Type:=8)
            If Err > 0 Then
                MsgBox ("Macro annulée")
                Exit Function
            End If
     
        Set Nom_Onglet_MEF = MEF.CurrentRegion
        ColDeb_MEF = MEF(1, 1).Column
        ColFin_MEF = MEF(1, MEF.Columns.Count).Column
        LigDeb_MEF = MEF(1, 1).Row
        LigFin_MEF = MEF(MEF.Rows.Count, 1).Row
     
        On Error Resume Next
        Set DATA = Application.InputBox(prompt:="Sélectionnez la plage de cellules de données à mettre en forme", Type:=8)
            If Err > 0 Then
                MsgBox ("Macro annulée")
                Exit Function
            End If
     
        Set Nom_Onglet_DATA = DATA.CurrentRegion
        ColDeb_DATA = DATA(1, 1).Column
        ColFin_DATA = DATA(1, DATA.Columns.Count).Column
        LigDeb_DATA = DATA(1, 1).Row
        LigFin_DATA = DATA(DATA.Rows.Count, 1).Row
     
        Range(Cells(LigDeb_DATA, ColDeb_DATA), Cells(LigFin_DATA, ColFin_DATA)).Select
        With selection.Interior
                .Pattern = xlNone
                .TintAndShade = 0
                .PatternTintAndShade = 0
        End With
     
    Range(Cells(LigDeb_DATA, ColDeb_DATA), Cells(LigFin_DATA, ColFin_DATA)).Select
    selection.FormatConditions.Delete
     
        For i = ColDeb_MEF To ColFin_MEF
            Val1 = "=" & Cells(LigDeb_MEF, i)
            Val2 = "=" & Cells(LigFin_MEF, i)
     
        selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
            Formula1:=Val1, Formula2:=Val2
        selection.FormatConditions(selection.FormatConditions.Count).SetFirstPriority
        With selection.FormatConditions(1)
            .Interior.Color = RVB(Cells(LigFin_MEF, i))
            .Font.Color = RVBTEXT(Cells(LigFin_MEF, i))
            .Borders.Color = RVBBORDER(Cells(LigFin_MEF, i))
        End With
        selection.FormatConditions(1).StopIfTrue = False
        Next i
     
    fin = Time
    temps = fin - debut
     
    MsgBox ("C'est fini !" & Chr(10) & "temps de traitement " & temps)
     
    End If
     
    End Function
    Merci de votre aide!!

    PS : a une autre question/Pb, Avant que je ne mette ma macro dans la macro menu, mon temps s'affichait en forma date/heure, maintenant il me met la valeur de la date.
    Si vous pouviez aussi résoudre ce pb ca m'arrangerai.

    Merci!!

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Bonjour,
    je pense que c'est dû au fait que les USF sont modal par défaut, mets la propriété ShowModal de ton USF à False et ça fonctionnera... mais ça a d'autres répercutions, l’utilisateur pouvant alors intervenir à son gré sur le classeur, regardes ça dans les tutos sur le USF ou dans l'aide

    Pour la question subsidiaire, il y a des paquets de réponses çà ce sujet sur le forum et ici :
    http://didier-gonard.developpez.com/...-excel-et-vba/

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Merci Ormonth pour ta réponse.

    Ca marche parfaitement maintenant.
    Et j'ai trouvé une solution pour ma date.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] utiliser des chiffres a virgules avec une inputbox
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/06/2011, 08h56
  2. [XL-2010] position et valeur d'une cellule avec Application.InputBox
    Par tallent_e dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/04/2011, 19h57
  3. [XL-2003] Incrémentation de réponses avec Fonction Inputbox sous VBA
    Par thé-citron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2011, 17h06
  4. Créer une requete avec un INPUTBOX()
    Par amerex dans le forum VBA Access
    Réponses: 3
    Dernier message: 24/06/2008, 19h14
  5. export avec parametre inputbox
    Par jokenjo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/02/2008, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo