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 :

[VBA-EXCEL] Afficher le résultat d'une variable à l'écran


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut [VBA-EXCEL] Afficher le résultat d'une variable à l'écran
    Bonjour à tous,

    Je cherche à afficher à l'écran le contenu d'une variable.
    Pour l'instant, je me sers d'un msgbox et chaque fois je dois cliquer sur OK.
    Comment faire pour l'afficher sans avoir à cliquer ?

    Le code sur lequel je travaille actuellement est le suivant.
    Je cherche l'occurence de la châine "TC" dans toutes les cellules d'un classeur, que ce soit dans le libellé de la cellule ou dans la formule qu'elle contient. Lorsque trouvée, la cellule est en jaune si c'est dans un libellé ou en rose si cette occurence se trouve dans une formule.

    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
    Sub IdentifierCellulesAvecChaineDeCaractèresStipulée()
     
        Dim SearchString, SearchChar As String
        Dim Feuille As Worksheet
        Dim Cell As Range
     
      ' Pour chacune des feuilles contenues dans un classeur,
      ' cherche les cellules connant la chaîne de caractères SearchChar
      ' avec respect de la casse et applique une couleur de fond jaune
      ' si elle les contient.
     
        SearchChar = "TC"
     
        For Each Feuille In Worksheets
            For Each Cell In Worksheets(Feuille.Name).UsedRange.Cells
     
                If Cell.HasFormula Then
                    SearchString = Cell.Formula
                    If InStr(1, SearchString, SearchChar, 0) > 0 Then
                        MsgBox (Feuille.Name & " // " & SearchString & " (dans le libellé !!!) ")
                        Cell.Interior.ColorIndex = 7 'Rose fluo
                    End If
                End If
     
                MsgBox (Feuille.Name & " // " & Cell.Value)
                If Not IsNumeric(Cell.Value) Then
                    SearchString = Cell.Value
                    If InStr(1, SearchString, SearchChar, 0) > 0 Then
                        MsgBox (Feuille.Name & " // " & SearchString & " (dans la formule !!!) ")
                        Cell.Interior.ColorIndex = 6 'Jaune fluo
                    End If
     
                End If
     
            Next Cell
        Next Feuille
     
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu peux définir le temps d'affichage. Tu as ça dans la FAQ.
    Comme je l'ai, ici affichage 1 seconde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        CreateObject("Wscript.shell").Popup Texte_A_Afficher, 1, "Titre de la boîte"
    Bonne soirée

  3. #3
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonsoir,

    Voir aussi Debug.print .

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut suite...
    Re-bonjour,

    1) Je ne trouve pas dans la FAQ
    2) Je voudrais que ça s'affiche à l'écran pas dans la fenêtre d'exécution
    3) Je voudrais que ça s'affiche à l'écran dans un truc style msgbox sur laquelle il n'y aurait plus à cliquer et où l'affichage se rafraichirait à chaque nouvelle affichage


    mci de votre aide

  5. #5
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    re,

    Utilise un userform avec une listbox où un textbox multiligne..

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    As-tu testé la solution que je t'ai donnée ? Elle évite l'userform + 1 textbox + 1 tempo pour ne laisser affiché ton message qu'un temps limité... Si ça ne te convient pas, dis ce qui ne te convient pas et ce qui te conviendrait, on ira plus vite
    Ce que je n'ai pas dit dans mon premier post est que les boutons ne servent que si on veut récupérer une indication sur le bouton activé. Sinon, c'est le temps indiqué qui conditionne la durée d'affichage.
    Exemple : r = InputBox(".....", ...., paramètre)

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Allo,
    Oui j'ai essayé, mais ça ne fonctionnait pas (encore la case OK à cliquer).
    Et je ne veux pas passer sur un Userform.
    Je voudrais juste un petit rectangle (style msgbox) dans lequel le contenu de la variable s'affiche et change à chaque fois que son contenu change lui aussi.
    Comme si on souhaitait avoir un petit compteur qui s'afficherait de 1 à 100 dans une msgbox sans aucun bouton òu controles...
    Je dois être d'une trop vieille école, mais y'a pas moyen de faire des sorties écran simplement en VB ?

    Entk je voudrais afficher un truc dans le style ci-dessous, mais sans avoir à cliquer 100 fois sur OK...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub AfficherLaVariableX()
     
        Dim X As Integer
     
        For X = 1 To 100
            MsgBox (X)
        Next X
     
    End Sub
    mci

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Quel version as-tu ? Quel chiffre as-tu mis ?

  9. #9
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonsoir,

    Citation Envoyé par JackOuYA Voir le message
    re,

    Utilise un userform avec une listbox où un textbox multiligne..
    si tu n'as qu'une valeur à afficher, utilise un userform : UserForm1, avec un label : Label1

    et dans un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub YaBoucle()
     Dim i As Integer
     UserForm1.Show False
     For i = 1 To 1000
        UserForm1.Label1 = i
        DoEvents
     Next
    Unload UserForm1
     End Sub

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    OK.

    Tout d'abord merci à vous deux (JackOuYA & ouskel'n'or).
    J'ai mis au point le code suivant basée sur la proposition de JackOuYA.
    Même si ça marche, je trouve plutôt "platte" de devoir passer par un userform. Je n'arrive pas à croire qu'il n'y ai rien de plus "direct".

    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
    Sub IdentifierCellulesAvecChaineDeCaractèresStipulée()
     
        Dim SearchString, SearchChar, Texte_A_Afficher As String
        Dim Texte_A_Afficher1, Texte_A_Afficher2, Texte_A_Afficher3 As String
        Dim Feuille As Worksheet
        Dim Cell As Range
        Dim i As Long
     
      ' Pour chacune des feuilles contenues dans un classeur,
      ' cherche les cellules connant la chaîne de caractères SearchChar
      ' avec respect de la casse et applique une couleur de fond jaune
      ' si elle les contient.
     
        SearchChar = "TC"
     
        For Each Feuille In Worksheets
            For Each Cell In Worksheets(Feuille.Name).UsedRange.Cells
     
                UserForm1.Show False
                Texte_A_Afficher1 = Cell.Address
                UserForm1.Label1 = Texte_A_Afficher1
                Texte_A_Afficher2 = Feuille.Name
                UserForm1.Label2 = Texte_A_Afficher2
                Texte_A_Afficher3 = Cell.Value
                UserForm1.Label3 = Texte_A_Afficher3
              ' CreateObject("Wscript.shell").Popup Texte_A_Afficher, 0.1, "XXX", "X"
                DoEvents
     
                If Cell.HasFormula Then
                    SearchString = Cell.Formula
                    Texte_A_Afficher = Cell.Address & " // " & Feuille.Name & " // " & SearchString & " (dans le libellé !!!)"
                    UserForm1.Label4 = Texte_A_Afficher
                    DoEvents
                    If InStr(1, SearchString, SearchChar, 0) > 0 Then
                        Texte_A_Afficher = Feuille.Name & " // " & SearchString & " (dans le libellé !!!)"
                        ' CreateObject("Wscript.shell").Popup Texte_A_Afficher, 1, "YYY"
                        Cell.Interior.ColorIndex = 7 'Rose fluo
                    End If
                End If
     
                If Not IsNumeric(Cell.Value) Then
                    SearchString = Cell.Value
                    Texte_A_Afficher = Cell.Address & " // " & Feuille.Name & " // " & SearchString & " (dans le libellé !!!)"
                    UserForm1.Label5 = Texte_A_Afficher
                    DoEvents
                    If InStr(1, SearchString, SearchChar, 0) > 0 Then
                        Texte_A_Afficher = Feuille.Name & " // " & SearchString & " (dans la formule !!!)"
                        ' CreateObject("Wscript.shell").Popup Texte_A_Afficher, 1, "ZZZ"
                        Cell.Interior.ColorIndex = 6 'Jaune fluo
                    End If
     
                End If
     
                For i = 1 To 350000
                Next i
     
                UserForm1.Label1 = ""
                UserForm1.Label2 = ""
                UserForm1.Label3 = ""
                UserForm1.Label4 = ""
                UserForm1.Label5 = ""
     
            Next Cell
        Next Feuille
        ' Unload UserForm1
     
    End Sub
    Et impossible de by-passer un OK dans la solution proposée par ouskel'n'or. Mais je suis en Excel 2003. Est-ce que ça peut l'expliquer ?


    Enfin, vous avez le code sur lequel je travaille sachant que par ça, je cherche à identifier certaines chaînes de caractères (ici "TC") dans l'ensemble des libellés ou formules d'un classeur et à remplacer ces diverses occurences en identifiant si c'était dans 1 libellé ou dans une formule...

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Curieux, j'ai la même version ue toi et le clic sur ok n'est pas nécessaire. Mais peut-être SilkyRoad, qui donne cette solution, a-t-il une explication... Faudrait simplement qu'il passe par là
    Bonne chance, donc.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2013, 14h53
  2. Afficher le résultat d'une variable sans les alerts
    Par qwark dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/03/2012, 18h31
  3. Réponses: 1
    Dernier message: 19/02/2011, 19h03
  4. Réponses: 13
    Dernier message: 26/07/2007, 08h50
  5. [VBA-Excel] affecter la valeur infinie à une variable
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/09/2006, 21h37

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