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 :

Calcul dans textbox qui ne fonctionne pas [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Fa1con74
    Homme Profil pro
    Sapeur-Pompier Professionnel
    Inscrit en
    Avril 2020
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Sapeur-Pompier Professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2020
    Messages : 38
    Par défaut Calcul dans textbox qui ne fonctionne pas
    Bonjour,

    Je souhaite calculer automatiquement la validité d'une date de passeport sur un userform

    J'entre ma date dans le Me.txtPasseportDate et je souhaite que dans txtPassValid s'affiche la date avec 10 ans de plus
    Sachant que mes variable sont déclarrées
    Dim DatePass As Date
    Dim IntervalTypePass As String
    Dim NumberPass As Integer

    J'ai donc écrit 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Private Sub UserForm_Initialize()
     
      Set f = Sheets("BDdata")
      Set bd = Range("a2:b" & [A65000].End(xlUp).Row)
      a = Application.index(bd, , 1)
      Tri a, 1, 1, UBound(a)
      '--villes +codes postaux
      ListeVille = Range("villeCodePostal").Value
      Me.ComboVille.List = ListeVille
      b = Application.index([villeCodePostal], Evaluate("Row(1:" & [villeCodePostal].Rows.Count & ")"), Array(2, 1))
      Tri b, 1, 1, UBound(b)
      Me.CodePostal.List = b
      Me.txtDateDeb.Tag = Date
      Me.txtDateDeb.Value = Format(CDate(Me.txtDateDeb.Tag), "dd/mm/yyyy")
      Me.txtDateFin.Tag = Date
      Me.txtDateFin.Value = Format(CDate(Me.txtDateFin.Tag), "dd/mm/yyyy")
      Me.txtBirthday.Tag = Date
      Me.txtBirthday.Value = Format(CDate(Me.txtBirthday.Tag), "dd/mm/yyyy")
      Me.txtPasseportDate.Tag = Date
      Me.txtPasseportDate.Value = Format(CDate(Me.txtPasseportDate.Tag), "dd/mm/yyyy")
      Me.txtPassValid.Tag = Date
      IntervalTypePass = "y"    ' "m" specifies months as interval.
      NumberPass = 15
      DatePass = Me.txtPasseportDate.Value
      Me.txtPassValid.Value = DateAdd(IntervalTypePass, NumberPass, DatePass)
      Me.txtPassValid.Value = Format(CDate(Me.txtPassValid.Tag), "dd/mm/yyyy")
    End Sub
    Pourriez-vous m'aider en me disant pourquoi le calcul ne se fait pas ?

    Merci

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par Fa1con74 Voir le message
    Pourriez-vous m'aider en me disant pourquoi le calcul ne se fait pas ?
    Le calcul ne se fait pas parce que tu le calcules avec 'Me.txtPasseportDate.Value' qui est dans un textbox et donc en texte.
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DatePass = CDate(Me.txtPasseportDate.Value)
    cela a des chances de mieux fonctionner mais il faudrait vérifier que ta date n'est pas perturbée par toutes les manipulations subies

  3. #3
    Membre averti
    Homme Profil pro
    No
    Inscrit en
    Février 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : No

    Informations forums :
    Inscription : Février 2018
    Messages : 47
    Par défaut
    Hello,

    Et en supprimant "Tag" dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txtPassValid.Value = Format(CDate(UserForm1.txtPassValid.tag), "dd/mm/yyyy")
    ca a l'air de marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.txtPassValid.Value = Format(CDate(UserForm1.txtPassValid), "dd/mm/yyyy")

  4. #4
    Membre averti Avatar de Fa1con74
    Homme Profil pro
    Sapeur-Pompier Professionnel
    Inscrit en
    Avril 2020
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Sapeur-Pompier Professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2020
    Messages : 38
    Par défaut
    Merci, mais chez moi cela ne fonctionne pas. Mais je suis preneur de toute solution, mon but est d'afficher la date de fin de validité du passeport soit la date de ma textbox "txtPasseportDate" + 10 ans.

  5. #5
    Membre averti
    Homme Profil pro
    No
    Inscrit en
    Février 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : No

    Informations forums :
    Inscription : Février 2018
    Messages : 47
    Par défaut
    Hello

    Sauf erreur de ma part,l'evenement Userform_Initialize ne fonctionne que quand le Userform est "Loaded" (on peut le verifier en pas a pas)

    Les commandes des modifications de tes TextBox peuvent etre integrees dans un module classique (non dans le code de l'userform)

    Si ton userform a pour nom "Userform1"

    Le programme suivant fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub UserFormDates_Init()
      UserForm1.txtPasseportDate.Tag = Date
      UserForm1.txtPasseportDate.Value = Format(CDate(UserForm1.txtPasseportDate.Tag), "dd/mm/yyyy")
      UserForm1.txtPassValid.Tag = Date
      IntervalTypePass = "yyyy"    ' "m" specifies months as interval.
      NumberPass = 10
      DatePass = UserForm1.txtPasseportDate.Value
        UserForm1.txtPassValid.Value = DateAdd(IntervalTypePass, NumberPass, DatePass)
      UserForm1.txtPassValid.Value = Format(CDate(UserForm1.txtPassValid), "dd/mm/yyyy")
      UserForm1.Show
    End Sub
    Pour un decalage de 10 ans, il faut corriger les parametres de DataADD dans ton programme
    IntervalTypePass = "yyyy"
    NumberPass = 10

  6. #6
    Membre averti Avatar de Fa1con74
    Homme Profil pro
    Sapeur-Pompier Professionnel
    Inscrit en
    Avril 2020
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Sapeur-Pompier Professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2020
    Messages : 38
    Par défaut
    Merci beaucoup, c'est ce que je recherchais

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

Discussions similaires

  1. [Débutant] Pourquoi le calcul dans ce code ne fonctionne pas ?
    Par aureldelphi35 dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/09/2017, 09h57
  2. Tests conditionnel dans formulaire qui ne fonctionnent pas !
    Par jlp13012 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2015, 17h07
  3. [Débutant] Affichage fichier excel dans Webbrowser qui ne fonctionne pas.
    Par botbot dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/04/2013, 22h04
  4. Lien html dans flash qui ne fonctionne pas?
    Par zuzuu dans le forum Flash
    Réponses: 5
    Dernier message: 08/12/2008, 17h01
  5. [DW MX] lien courriel dans firefox qui ne fonctionne pas
    Par xataka dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 02/11/2007, 14h54

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