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 :

Vérification de date


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 35
    Par défaut
    Bonjour,
    Alors voila j'ai une première macro qui ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim nbValeurs&, NbOccG&, NbOccH
        nbValeurs = Application.WorksheetFunction.CountA(Range(Cells(Target.Row, 7), Cells(Target.Row, 8)))
            If nbValeurs = 2 Then
            NbOccG = Application.WorksheetFunction.CountIf(Columns("G"), Cells(Target.Row, 7))
            NbOccH = Application.WorksheetFunction.CountIf(Columns("H"), Cells(Target.Row, 8))
            If NbOccG > 1 And NbOccH > 1 Then
                MsgBox "La plage à laquelle vous souhaitez planifier votre formation est déjà prise"
                Target.Clear
            End If
        End If
    End Sub
    Elle permet de comparer les dates et les heures dans deux colonnes et empêche la saisie si une date et une heure qui ont déjà été choisies sont rechoisies,cela permet d'éviter de planifier deux formations au même moment par exemple.

    On m'a demandé quelque chose de différent: deux types de formations dans deux onglets différents avec bien sur des dates et des heures pour ces deux types de formations.
    Il faudrait donc que ma macro compare les dates et les heures non pas que dans un seul onglet mais dans les deux.

    Le top se serait dans premier temps une comparaison dans les deux colonnes de dates afin de vérifier si la date saisie est déjà prise, si oui alors msgbox d'alerte avec un msg x , sinon rien, puis comparer date et horaires associés afin de voir si il y a une correpondance dans les deux onglets ou non. Si, oui alors msg d'erreur prévenant l'utilisateur et empêchant la saisie sinon rien.

    Bref je ne sais pas si je me suis expliquer correctement...j'espère seulement que c'est possible.

    Merci d'avance pour votre lecture et vos éventuelles réponses!!!!!

    Bonjour,
    J'ai essayer ceci:
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim nbValeurs&, NbOccG&, NbOccH
        nbValeurs = Application.WorksheetFunction.CountA(Range(Cells(Target.Row, 7), Cells(Target.Row, 8)))
        ligne = Target.Row
            If nbValeurs = 2 Then
            NbOccG = Application.WorksheetFunction.CountIf(Columns("G"), Cells(ligne, 7)) 'Compte la première feuille colonne G
            NbOccG2 = Application.WorksheetFunction.CountIf(Sheets("Feuil2").Columns("G"), Sheets("Feuil2").Cells(ligne, 7)) 'compte la deuxième colonne G
            NbOccH = Application.WorksheetFunction.CountIf(Columns("H"), Cells(ligne, 8))  'Compte la première feuille colonne H
            NbOccH2 = Application.WorksheetFunction.CountIf(Sheets("feuil2").Columns("H"), Sheets("feuil2").Cells(ligne, 8))
            MsgBox (nbValeurs & NbOccG & NbOccG2 & NbOccH & NbOccH2) 'compte la deuxième colonne H
            If NbOccG + NbOccG2 > 1 And NbOccH + NbOccH2 > 1 Then 'compare le nombre d'occurence
                MsgBox "La plage à laquelle vous souhaitez planifier votre formation est déjà prise par un autre référent."
                Target.Clear
            End If
        End If
    End Sub
    Néanmoins ca ne marche pas quelqu'un aurait une idée?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If nbValeurs = 2 Then
            NbOccG = Application.WorksheetFunction.CountIf(Columns("G"),cdate( format(Cells(Target.Row, 7),"yyyy-mm-dd hh:mm:ss")))
            NbOccH = Application.WorksheetFunction.CountIf(Columns("H"),cdate( format(Cells(Target.Row, 8),"yyyy-mm-dd hh:mm:ss")))
            If NbOccG > 1 And NbOccH > 1 Then
                MsgBox "La plage à laquelle vous souhaitez planifier votre formation est déjà prise"
                Target.Clear
            End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Trim("" & Cells(Target.Row, "G")) = "" Then Exit Sub
    NbOccG = Application.WorksheetFunction.CountIf(Columns("G"), CDate(Format(Cells(Target.Row, "G"), "yyyy-mm-dd hh:mm:ss")))
    If NbOccG > 1 Then MsgBox Cells(Target.Row, "G") & vbCrLf & "Existe Déjà": Cells(Target.Row, "G") = ""
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 35
    Par défaut
    Bonjour,
    Merci pour ta réponse,
    Je suis désolé mais étant novice en VBA, je ne comprends pas ton code... :/
    Pourrais-tu m'expliquer?
    Merci encore

  4. #4
    Invité
    Invité(e)
    Par défaut
    si tu compares avec ton code tu comprendra!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If nbValeurs > 1 Then
            NbOccG = Application.WorksheetFunction.CountIf(Columns("G"),cdate( format(Cells(Target.Row, 7),"yyyy-mm-dd hh:mm:ss")))
            NbOccH = Application.WorksheetFunction.CountIf(Columns("H"),cdate( format(Cells(Target.Row, 8),"yyyy-mm-dd hh:mm:ss")))
            If NbOccG > 1 And NbOccH > 1 Then
                MsgBox "La plage à laquelle vous souhaitez planifier votre formation est déjà prise"
                Target.Clear
            End If

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 35
    Par défaut
    Rebonjour,
    Quand j'essay de décrypter ton code, je vois qu'il est semblable au mien, mais je ne vois pas comment il compare les dates et heures dans deux feuilles différentes.....

  6. #6
    Invité
    Invité(e)
    Par défaut
    désolé, en réalité c'est mois qui n'est pas compris et qui réponds à coté de la plaque!

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 35
    Par défaut
    Ca n'est pas grave.

    Y'a peut être plus simple ceci dit....
    J'ai pensé à un calendrier ou les personnes mettraient des croix là où elles voudraient mettre leur formation ou alors le nom de leur formation. Ensuite par une macro ca crérai une liste récapitulative avec le nom la date de l'heure ce qui necéssiterai donc d'aller lire l'abscisse et l'ordonné de la ou se trouve la formation dans la calendrier

    Peut être trop compliqué à mettre en place...

    Bref...

    Ci-joint l'idée du calendrier mise en place, le problème c'est qu'au niveau macro je ne vois pas comment faire
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. vérification de date
    Par mariafan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/12/2006, 15h31
  2. vérification de date
    Par arnogef dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/11/2006, 18h23
  3. [MySQL] Probleme script concernant vérification de dates
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 10/10/2006, 13h37
  4. Vérification de date [SQL SERVER 2K]
    Par gwadakillah dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/07/2006, 15h17
  5. vérifications des dates
    Par smail21 dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/11/2005, 16h02

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