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 :

Transfert de données vers une MsgBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Par défaut Transfert de données vers une MsgBox
    Bonsoir ou bonjour à vous toutes et tous.

    Vos services me furent déjà d'une (très) grande utilité et mes progrès en vba ne se font que trop lentement par-rapport à la demande. C'est pour ces raisons que me voilà encore devant vous, la queue entre les jambes, quémandant votre aide ou tout du moins une orientation dans la réalisation du problème suivant:

    Un simple tableau avec deux lignes pour poser ses congés annuels.
    La première ligne avec les dates de l'année (format de la date: dd-mm pour info) du 01 janvier au 31 décembre.
    La deuxième ligne avec des cases vides : l'utilisateur coche la case pour indiquer qu'il pose un congé le jour où la case est cochée

    ex: 01-02 02-02 03-02
    x x
    signifie "je prends des congés le 01 et 02 février"

    Maintenant que l'explication est faite, voici le soucis: je cherche à faire un récapitulatif sous la forme d'une MsgBox des dates de congés posés.

    Grossièrement, il faudrait visualiser dans cette MsgBox toutes les dates (en ligne 1) (1 jour par-ci par-là et/ou toutes les plages de vacances) pour lesquels il y aurait une croix (ou case non vide) en ligne 2.

    Dans l'exemple ci-dessus: il faudrait que le résultat soit indiqué dans la MsgBox "du 01/02 au 02/02".

    Je peux vous envoyer un petit fichier très rapide pour améliorer la compréhension.


    D'ici là, je vous remercie par avance, ne serait-ce que pour tous les moments où le forum a déjà pu me dépanner (entre autre avec anasecu et thebenoit59)


    PS: pour essayer de résoudre le problème, j'ai bien tenté quelque petites choses (principalement avec des "if" mais ça ne donne rien de bien intéressant, désolé)

    PPS: il y a donc deux problèmes: 1) savoir comment faire le récapitulatif des dates sélectionnées et 2) comment transférer ces données vers une MsgBox

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    bonsoir

    voilà un exemple écrit sur tablette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sub test()
    dim i as integer
    dim Res as string
     
    res="Jours demandés:"
    with worksheets("nomdetafeuille")
        for i=2 to 367
             if lcase(.cells(2,i))="x" then res =res &vbnewline &format(.cells(1,i),"dd/mm")
         next i
    end with
    msgbox res
    end sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Par défaut
    Merci beaucoup mercatog. Pour ta rapidité et ton efficacité.

    Ton code fonctionne à merveille mais (s'il n'y a pas de mais ce serait dommage), serait-il possible de pousser le vice plus loin en essayant de regrouper les plages de vacances à partir du moment où les congés se suivent?

    Par exemple, à la place de "01/02 02/02 03/02 04/02 05/02 11/03 12/03 13/03 07/05" plutôt obtenir "01/02 - 05/02 11/03-13/03 07/05"? Avec les même plage sur une seule ligne soit
    01/02 - 05/02
    11/03 - 13/03
    07/05
    (possibilité de remplacer le trait d'union par un mot comme "au" etc.)

    Si ce n'est pas réalisable, ton code me convient déjà plutôt bien.

    Encore merci

    EDIT: petit problème: une "erreur d’exécution "424" : objet requis" se lance dès l'enclenchement du code que j'ai ajusté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub visucongés()
    Dim i As Integer
    Dim Res As String
     
    Res = "Jours demandés:"
    With Activesheets
        For i = 3 To 370
            If LCase(.Cells(4, i)) = "x" Then Res = Res & vbNewLine & Format(.Cells(3, i), "dd/mm")
        Next i
    End With
    MsgBox Res
    End Sub
    Edit d'un Edit : il est temps d'aller se coucher et d'enlever le "s" en trop dans activesheet. Toutes mes excuses pour ce contretemps.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Est ce que seuls les jours ouvrables sont pris en compte? C'est à dire si on coche le vendredi 01/04 en saute samedi et dimanche et on coche le lundi 04/04, on écrira du 01/04 au 04/01 ou bien séparément?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Par défaut
    alors concernant les jours ouvrables, ce serait un bonus de pouvoir zappé les we. Mais pas obligatoire.
    A savoir qu'il y a une petite formule pour les dates car tout dépend de l'année demandée (que ce soit 2016, 2017 ou encore 2020, le 3 janvier ne tombera pas forcément le même jour de la semaine) donc ça risque d'empirer le problème.

    Le principal reste de pouvoir regrouper les dates avec des cellules "jointives".
    Si tu arrives en plus à exclure les we (en fonction de l'année demandée donc), je ne pourrai que m'agenouiller devant toi hé hé

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    C'est dommage que tes dates sont en lignes et tes croix en dessous car s'ils étaient en colonne un simple TCD aurait fait l'affaire (je viens de le tester)

    Bonne journée

Discussions similaires

  1. [MySQL] Transfert des données vers une BDD
    Par johnrock dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/02/2013, 02h23
  2. Réponses: 12
    Dernier message: 17/02/2012, 23h51
  3. Macro de transfert de données d'une feuille active vers 1 autre
    Par M8407108 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/12/2007, 17h27
  4. Transfert des données d'une boucle vers une feuille
    Par chelmi95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/09/2007, 14h03
  5. transfert de données d'une table vers excel
    Par choupine dans le forum Oracle
    Réponses: 2
    Dernier message: 19/03/2007, 11h13

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