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 :

Si aucune modification sur DatePicker then


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut Si aucune modification sur DatePicker then
    Et oui, encore moi

    Voilà mon prblème:

    J'ai un USF dans lequel se trouve plusieurs (3) date and time picker auquel je donne la valeur Now à l'initialisation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DTPDemande.Value = Now
    MultiPage1.Value = 3
    DTPSignChef.Value = Now
    DTPSignDir.Value = Now
    MultiPage1.Value = 0
    J'aimerais, lorsque je click sur mon bouton OK pour transférer mes données pouvoir dire "si le Date and Time picker n'a pas été modifié then DTP.value = 0" mais je n'arrive pas à trouver comment l'écrire...
    Présentement, lorsque je click sur OK, la date du jour s'inscrit automatiquement si le DTP n'a pas été modifié (ce qui est logique puisque c'est la valeur qui lui est attribuée).

    Est-ce possible de faire une action si le controle n'a pas été modifié?

    Merci!
    Geneviève

  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
    une proposition,
    tu dois comparer donc la valeur initiale avec la valeur finale
    le test se fera donc
    par exemple, un textbox invisible qui reprend la valeur initiale

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    Bonjour mercatog!

    J'ai testé rapido et ça ne fonctinone pas...
    J'ai créé un textbox invisible et j'ai mis dans USF initialize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbxCompare.Value = DTPDatePrevue.Value
    Mon problème est que la valeur ne reprend pas seulement la date, mais aussi l'heure... donc le temps que je complète le formulaire, l'heure à changé et donc si je compare le textbox et mon DTP les 2 valeurs sont différentes..

    J'ai tenté d'écrire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Left(date1, 10) = Left(tbxCompare.Value, 10) Then
    feuilSuivi.Cells(derlig, 3).Value = 0
    Else
    feuilSuivi.Cells(derlig, 3).Value = date1
    End If
    Mais toujours aucun résultats...

    Mon code pour récupérer la date est probalement erroné... ce n'est que des tentative ce matin...

    Je vais fouiller un peu plus, mais si tu as une piste, elle sera la bienvenue

    Merci beaucoup et bonne journée!
    Geneviève

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DTPSignChef.Value = Date 'au lieu de Now
    et dans initialiseou bien tu peux passer par une variable publique

    ou bien simplement dans ton cas,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If datediff("d",date1,Date)=0 Then
      feuilSuivi.Cells(derlig, 3).Value = 0
    Else
      feuilSuivi.Cells(derlig, 3).Value = date1
    End If

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    Bonjour mercatog!

    Effectivement, c'est beaucoup mieux comme ça et ça fonctionne très bien!

    Voici donc mon code:
    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
    Private Sub UserForm_Initialize()
    DTPDemande.Value = Date
    MultiPage1.Value = 3
    DTPSignChef.Value = Date
    DTPSignDir.Value = Date
    MultiPage1.Value = 0
     
    tbxCompareChef.Value = Date  ' textbox invisible
    tbxCompareDir.Value = Date ' textbox invisible
    ...
    End sub
     
    Private Sub btOK_Click()
    If date2 <> tbxCompareChef.Value Then
      feuilSuivi.Cells(derlig, 16).Value = 0
    Else
      feuilSuivi.Cells(derlig, 16).Value = date2
    End If
    If date3 <> tbxCompareDir.Value Then
      feuilSuivi.Cells(derlig, 17).Value = 0
    Else
      feuilSuivi.Cells(derlig, 17).Value = date3
    End If
    ...
    End sub
    Merci beaucoup!
    Geneviève

  6. #6
    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
    Regarde ceci (sans passer par le textbox invisible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If datediff("d",date2,Date)<>0 Then
      feuilSuivi.Cells(derlig, 16).Value = 0
    Else
      feuilSuivi.Cells(derlig, 16).Value = Date
    End If

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, Mercatog,

    tu es sûr de la validité de la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If datediff(date2,Date)=<>0 then ...
    (car j'aurais personnellement tendance à y "voir" 2 erreurs)
    ??

  8. #8
    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
    Mea culpa, j'ai pas l'habitude d'écrire à main levé
    désolé pour tous
    rectifié

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bien
    Mais alors, cela s'exprime plus simplement ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If date2 <> date then ...
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If date - date2 <> 0 then ...

  10. #10
    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
    pour faire joli!

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Ouais...
    et même ainsi, encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If date - date2 then ....
    Because toute valeur différente de 0 est True

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    bonjour mercatog, ucfoutu

    Effectivement, ucfoutu, ta solution est très simple et efficace!

    J'ai donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub btOK_Click()
    If date2 <> Date Then
      feuilSuivi.Cells(derlig, 16).Value = 0
    Else
      feuilSuivi.Cells(derlig, 16).Value = date2
    End If
    If date3 <> Date Then
      feuilSuivi.Cells(derlig, 17).Value = 0
    Else
      feuilSuivi.Cells(derlig, 17).Value = date3
    End If
    End sub
    Ce qui fonctionne très bien! je n'ai plus besoin des txb invisibles!
    Un grand merci!!
    Geneviève

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    Oups finalement ça accroche...

    lorsque je vais récupérer mes données dans mon USF Modif et que je clic sur OK il n'enregistre pas les changements fait aux DTP...

    Pourtant, si je change la date des DTP date2 et date3, il devrait me mettre la bonne valeur non?

    Aussi, la logique si on la lit dit si date2 est différent de Date (donc date du jour) then met 0, mais c'est l'inverse.... sauf que meme si je remplace <> par = j'obtien le meme résultat...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If date2 <> Date Then
      feuilSuivi.Cells(derlig, 16).Value = 0
    Else
      feuilSuivi.Cells(derlig, 16).Value = date2
    End If
    If date3 <> Date Then
      feuilSuivi.Cells(derlig, 17).Value = 0
    Else
      feuilSuivi.Cells(derlig, 17).Value = date3
    End If
    Je suis vraiment perdu!
    Geneviève

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Fais un
    juste avant ton If ...
    et dis-nous ce qui s'affiche

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    Il m'inscrit la bonne date (celle que je vien d'aller indiquer dans mon DTP), mais par la suite il va inscrire 0 dans ma feuille.....

    ?!

  16. #16
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If datediff("d",date2,Date)=0 Then
      feuilSuivi.Cells(derlig, 16).Value = 0
    Else
      feuilSuivi.Cells(derlig, 16).Value = Date2
    End If
    si DP=aujourd'hui->écrire 0
    sinon-> écrire DP

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Je ne sais pas ce que vous fabriquez ....

    voilà (décomposé avec titi pour qu'on y voie bien clair) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim titi As Date
    titi = IIf(Date - date2, date2, 0)
    MsgBox titi " et c'est ce titi que tu dois écrire dans la cellule de ton choix
    Il est maintenant bien clair que tu n'as pas besoin de ce titi (directement la cellule concernée = .... etc.... )===>> une seule ligne de code)

  18. #18
    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
    et voilà, pas à pas
    une proposition simple!

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 106
    Par défaut
    Bonjour!

    J'ai adapté titi avec mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    feuilSuivi.Cells(derlig, 16).Value = IIf(Date - date2, date2, 0)
    feuilSuivi.Cells(derlig, 17).Value = IIf(Date - date3, date3, 0)
    J'ai 2 problèmes:
    1- ca fonctionne bien pour date2: si le DTP est à la date du jour, la valeur 0 est inscrite et sinon la valeur choisie s'inscrit. Parcontre ça ne fonctionne pas avec date3. J'ai placé une msgbox et la valeur renvoyée par date3 est la valeur du jour, donc la valeur 0 est inscrite dans ma feuille... pourquoi? Aucune idée!!

    2- Le code semble vérifier si la valeur de date2 est = à celle qu'il avait à l'initialisation du USF. Je veux dire que si je lance mon USF frmModif et que je modifie la date (date2) d'une demande X et que j'enregistre, date2 va s'inscrire à la bonne ligne. Parcontre, si je veux modifier de nouveau la demande X lorsque je refais enregistrer, date2 prend la valeur 0 puisque le DTP n'a pas été modifié (donc valeur de départ = valeur de sortie). Je croyait qu'en comparant mon controle avec Date je le comparait à la date du jour...

    Je crois que je me suis embarquée dans un projet qui va au dela de mes connaissances

    J'ai décidé de vous metter le fichier en pièce jointe, ce sera peut-être plus simple.

    Encore une fois merci beaucoup!
    Geneviève
    Fichiers attachés Fichiers attachés

  20. #20
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Désolé, mais (je l'ai dit maintes fois) je n'ouvre jamais un fichier Excel non écrit par moi-même. Aujourd'hui, en plus, la question ne se pose même pas à moi (je n'ai carrément pas Excel à portée de main )...

    Mais plusieurs choises m'interpellent dans tes explications :
    1)
    la valeur renvoyée par date3 est la valeur du jour, donc la valeur 0 est inscrite dans ma feuille... pourquoi? Aucune idée!!
    As-tu déclaré en "générale" la variable date3 ? Comment et quand la modifies-tu ?
    2)
    Le code semble vérifier si la valeur de date2 est = à celle qu'il avait à l'initialisation du USF. Je veux dire que si je lance mon USF frmModif et que je modifie la date (date2) d'une demande X et que j'enregistre, date2 va s'inscrire à la bonne ligne. Parcontre, si je veux modifier de nouveau la demande X lorsque je refais enregistrer, date2 prend la valeur 0 puisque le DTP n'a pas été modifié (donc valeur de départ = valeur de sortie). Je croyait qu'en comparant mon controle avec Date je le comparait à la date du jour...
    Même commentaire que pour date3 :...

    Je crois qu'à ce stade tu devras expliquer pas à pas ce que tu veux faire :
    - geste 1 : je fais ceci et j'attends cela
    - geste 2 : je fais ceci et j'attends cela
    - geste 3 : ..... etc...
    Arrête-toi au geste 3 (cela suffira pour que l'on comprenne tout-à-fait)...
    Réponds avec calme, mais avec méthode et précision.
    Rien n'est compliqué (tu verras).

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/05/2008, 16h43
  2. Faire des modifs sur une sheet excel Read Only via VBA
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 18h02
  3. modification sur un sript
    Par guttts dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2005, 10h45

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