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 :

Msg pour alertes date dépassée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Bonsoir

    j ai le tableau suivant :

    Matricule....Date............... Type de doc.......Agence
    444------ 17/06/2015----------- MV--------- AGENCE 1
    333------ 20/06/2015----------- CL----------AGENCE 1
    34------- 21/06/2015----------- CL----------AGENCE 2
    888------ 14/06/2015----------- CL----------AGENCE 1
    98------- 20/06/2015----------- CL----------AGENCE 2


    est il possible d'afficher un msgbox qui me donne : Pour l'agence 1 , le type de doc dont la date est inferieure à la date du jour, en précisant aussi ( si c est possible) le numéro de matricule correspondant


    merci pour votre aide

    Je n ai pas joint de tableau excel suite aux recommandations
    j espere que les informations fournies dans le message sont assez clairs

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut Voili Voilou
    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
    Option Explicit
    Option Base 1
     
    Sub test()
        Dim valeur As Integer
        Dim xlsheet As Worksheet, xlsheet2 As Worksheet
        Dim MyRange As Range, AllRange As Range
        Dim MyDico As New dictionary
        Dim MyObject As Contenu
        Dim Clef As String
        Dim Key As Variant
        Dim MyTab, MyTab2()
        Dim i As Long
    Set xlsheet = ThisWorkbook.Worksheets("Feuil3")
    Set xlsheet2 = ThisWorkbook.Worksheets("Feuil4")
    With xlsheet
        Set AllRange = .Range(.Range("A2"), .Range("A2").End(xlDown))
     
        AllRange.Select
        For Each MyRange In AllRange.Cells
            Clef = MyRange.Value & "//" & MyRange.Offset(, 1).Value & "//" & MyRange.Offset(, 2).Value & "//" & MyRange.Offset(, 3).Value
            If Not MyDico.Exists(Clef) Then
                Set MyObject = New Contenu
                MyTab = Split(Clef, "//")
                MyObject.Agence = MyTab(3)
                MyObject.DateS = MyTab(1)
                MyObject.Matricule = MyTab(0)
                MyObject.TypeD = MyTab(2)
                MyDico.Add Clef, MyObject
            End If
        Next MyRange
    End With
    i = 1
    valeur = InputBox("Rentre le numero de l'agence")
    'supprimer la clef en trop
    For Each Key In MyDico.Keys
        If MyDico(Key).Agence = valeur And MyDico(Key).DateS < Date Then
            ReDim Preserve MyTab2(2, i)
            MyTab2(1, i) = MyDico(Key).TypeD
            MyTab2(2, i) = MyDico(Key).Matricule
            i = i + 1
        End If
    Next Key
        xlsheet2.Range("A1").Resize(UBound(MyTab2, 1), UBound(MyTab2, 2)).Value = MyTab2
    End Sub
    et tu rajoute un module de classe appelé Contenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
    Public Matricule As Long
    Public DateS As Date
    Public TypeD As String
    Public Agence As Integer
    et ca marche super

  3. #3
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    bonsoir
    merci pour ta réponse
    je ne pensais pas que c'était aussi complexe que çà ...
    Je teste et je te dis

    dommage pour LENS ...

  4. #4
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    Je ne sais pas le nombre de données, en tout cas ca fonctionne pour 10000000 de données ce truc , regarde bien et si tu comprend pas je t'explique, apres c'est pas ultra complexe le code en lui meme, mais je suis certain qu'il y a plus facile

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le msgbox est impératif ?

    pourquoi pas afficher dans une feuille à part le résultat ?

    si tu as 200 résultats, tu vas être limité en affichage dans le msgbox ... et j'ose imaginer que tu ne veux pas 200 msgbox à la suite

  6. #6
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Bonsoir

    si la msgbox peut afficher une dizaine de données c est largement suffisant
    j ai fais un test avec le code que m a donné TamTam mais j ai un msg d'erreur
    Erreur de compilation - Type defini par l utilisateur non defini

    merci

  7. #7
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    Ouai dans ma proposition j'enregistre les lignes qui nous interesse et je les copie dans une autre feuille , comme le dit Joe ca va vite etre compliqué si tu as bcp de données, dans mon code j'ai oublié de preciser d'ajouter le reference microsoft runtime, car sinon il reconnaitra pas ton dictionaire.
    Je t'ai mis une inputbox aussi pour choisir l'agence si tu veux la 1 la 2 ... par contre je l'ai mis en integer , tu peux le modifier si tu veux , mais ou tu le modiie en string dans le code ou sinon tu change tes données dans excel en mettant juste le numero pas "agence".

    Et oui Pour lens c'est pas facile en ce moment :/ et c'est pas fini , mais bon supporter a vie

  8. #8
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    je veux ma msgbox....
    Sérieusement je préfère une msgbox sa obligerait l'utilisateur de traiter le problème
    il n y aura pas 10 infos à afficher sa c est sur ...

    Ensuite, pour le code agence pas nécessaire de choisir le numéro d agence ( chaque agence éditera son état )

    Pour la reference microsoft runtime là je ne sais pas de quoi il s agit

    désolé de t embêter mais je suis meilleur si tu me demande qui était le coach de LENS ;;;

    merci encore pour ton aide

  9. #9
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ce que je proposais à demi-mot dans mon précédent message, c'est d'extraire (via filtre avancé) les données pour les présenter dans une feuille

    Ainsi, il devient possible de "paramétrer" ton extraction, changer l'agence, filtrer les types de documents, les matricules etc...

    mais si le MsgBox te suffit amplement, j'aurai au moins eu le mérite de t'en exposer les limites qui, acceptées, ne sont plus des problèmes mais des compromis

    voici ce dont je parlais : http://philippetulliez.developpez.co...dvancedfilter/

    bonne lecture, tu verras que tu peux même réaliser cette opération manuellement en quelques clics

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonsoir.

    Citation Envoyé par Tournament Voir le message
    je ne pensais pas que c'était aussi complexe que çà ...
    Non, c'est plutôt assez simple, avec un MsgBox par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Demo1()
        Const AG = "AGENCE 1"
     
        With Feuil1.Cells(1).CurrentRegion
            For R& = 2 To .Rows.Count
                If .Cells(R, 4).Text = AG And .Cells(R, 2).Value < Date Then T$ = T$ & vbLf & .Cells(R, 3).Text & vbTab & .Cells(R, 1).Text
            Next
        End With
     
        If T > "" Then MsgBox "Type" & vbTab & "Mat" & T, vbExclamation, "   Alerte " & AG
    End Sub
    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  11. #11
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juin 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 105
    Par défaut
    Bonjour

    Excellent !!!!
    C'est exactement ce que je cherchais
    mais j ai bien noté que si j avais beaucoup de données à extraire mieux vaut utiliser la solution avec filtre

    merci à tous
    vos suggestions m ont donné des idées ....

  12. #12
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

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

Discussions similaires

  1. verification valeur select pour verifier si date dépassée
    Par calitom dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 31/03/2006, 17h14
  2. [VBA -A]Code pour répondre au question des msg d'alertes
    Par soad029 dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/03/2006, 12h21
  3. [VB.NET] Valur null pour une date.
    Par Lois dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/12/2004, 14h38
  4. Réponses: 2
    Dernier message: 09/10/2004, 20h45
  5. Création requete besoin d'aide pour une date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2004, 22h03

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