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 :

commande msgbox: faire une liste dans la boite de message


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut commande msgbox: faire une liste dans la boite de message
    Bonjour à tous,

    je ne suis pas un expert en VBA, je dirais même un débutant. J'ai réussi à faire quelques trucs simples mais là j'ai besoin d'aide.

    J'ai créé dans VBAProject une commande qui recherche des éléments selon des critères de date, et lorsqu'il en trouve-un, la boite de dialogue apparait et de de l'info sur l'élément trouvé. Le problème c'est que je dois appuyer sur "ok" autant de fois que ma commande a trouvé une valeur. Donc si j'ai 10 éléments qui correspondent à ma recherche, je dois peser 10 fois sur OK pour sortir de là.

    Pour faire une histoire courte je dois faire ressortir les ponts qui doivent être inspectés immédiatement pour les dates échues et un autre message pour les ponts qui doivent être inspectés d'ici les 15 prochains jours. Mon problème est que si j'ai 10 ponts, je devrai appuyer 10 fois pour sortir enfin de là.

    Serait-il possible que dans 1 seule boite de message (en fait une boite contenant la liste des ponts échus, et 1 boite pour la liste des ponts à échéance dans les 15 prochains jours), tous les numéros de ponts " & valeur & " que je désire faire ressortir soient listés un en dessous de l'autre dans la boite de message au lieu qu'ils le soient à l'unité?

    voici ma... (je ne sais même pas comment appeler cela... commande? macro? instructions?) ma série de lignes.

    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
    Private Sub Workbook_Open()
    'pour avertir que des observations sont passées dates et dûes
    Dim DATEDELAPROCHAINEOBSERVATION As Range
    For Each DATEDELAPROCHAINEOBSERVATION In ActiveSheet.Range("DATE_DE_LA_PROCHAINE_OBSERVATION")
    valeur = Cells(DATEDELAPROCHAINEOBSERVATION.Row, 1)
           If DATEDELAPROCHAINEOBSERVATION < Date And Not DATEDELAPROCHAINEOBSERVATION = "" Then
            MsgBox "Le pont " & valeur & " doit faire l'objet d'une inspection d'observation dans les plus bref délais", vbCritical, "délais d'inspection dépassé"
        Else
        End If
        If DATEDELAPROCHAINEOBSERVATION >= Date And DATEDELAPROCHAINEOBSERVATION < Date + 16 Then
            MsgBox "Le pont " & valeur & " doit faire l'objet d'une inspection d'observation d'ici les 15 prochains jours", vbExclamation, "l'inspection d'observation est dûe pour ce mois-ci"
        Else
        End If
    Next
    End Sub

    merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Utilise donc une variable string que tu complètes par concaténation au sein de ta boucle de parcours
    Affiche en suite cette variable par msgbox.

    Exemple de mécanisme (exemple, hein ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    toto = ""
     
    for k = 1 to 3
      toto = toto & vbcrLf & k
    next
    msgbox mid(toto, 2)

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Utilise donc une variable string que tu complètes par concaténation au sein de ta boucle de parcours
    Affiche en suite cette variable par msgbox.

    Exemple de mécanisme (exemple, hein ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    toto = ""
     
    for k = 1 to 3
      toto = toto & vbcrLf & k
    next
    msgbox mid(toto, 2)
    Merci pour ta réponse rapide. Mais je suis vraiment débutant, j'apprends par comparaison. Serait-il pour toi possible d'insérer cet exemple dans mes lignes, que je comprenne un peu plus ce que toto correspond à mon exemple? À quel endroit dois-je insérer tes lignes?

    merci.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Désolé, mais je vais attendre que tu me montres au moins un effort, car la chose est trop simple.
    Et ce, d'autant que tu es un débutant.
    J'attends donc cet effort, même si raté.

  5. #5
    Candidat au Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut
    Ah parce que tu penses que ça fait juste 5 minutes que je me casses là tête sur ce problème? J'inspecte des ponts, je travaille dehors, la programmation c'est vraiment pas ma branche. je ne connais même pas les termes. Pour toi ça semble tellement facile que ça t'insulte presque que je pose ce genre de question. laisse faire si tu penses que je ne fais pas d'efforts. Il y a d'autres forum qui ne me donneront pas sûrement des réponses aussi plate que la tienne. un gros MERCI pour ton aide.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonne chance, donc. Ce sera sans moi et te dis donc adieu.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2015, 21h00
  2. Réponses: 14
    Dernier message: 09/04/2008, 14h45
  3. Réponses: 5
    Dernier message: 17/10/2007, 18h17
  4. Faire une liste d'élément qui ne sont pas dans la base
    Par bossLINDROS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2007, 12h09
  5. [VB]Afficher une liste dans une boite de dialogue
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 05/04/2006, 11h30

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