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 :

Numéro de transaction [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut Numéro de transaction
    Bonjour à tous,

    Etant en plein développement d'un ERP de transition pour mon entreprise, je souhaite enregistrer toutes les transactions effectuées par un numéro "unique". Ce numéro est construit grâce à la valeur Excel de la date et de l'heure, qui est codé de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        x = TimeValue(Time)
        y = DateValue(Date)
        NoTrans = y & Mid(x, 3, 7)
    Mon problème est que ce bout de code est au sein d'une boucle For, et lorsque les opérations s’enchainent, je me retrouve avec un numéro de transaction identique pour certaines lignes de la base de données.

    Je ne pense pas que le problème vienne de la rapidité d’exécution du code car j'ai testé avec un "Sleep" à 300ms juste avant la définition du n° de transaction, et le problème survient tout de même.

    J'ai tenté de passer par Do While ... de ce type, et ça à l'air de fonctionner, sauf que ça me ralenti de manière assez importante l'exécution :

    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
    Sub NoTransaction()
     
    Dim x As Double
    Dim y As Double
     
    'TransA et TransB sont des variables publiques, déclarées comme "As Double", tandis que NoTrans est déclaré comme "As String"
     
    Do While TransA = TransB
     
        x = TimeValue(Time)
        y = DateValue(Date)
        TransA = y & Mid(x, 3, 7)
     
    Loop
     
    NoTrans = TransA
     
    End Sub
    Pensez-vous que le problème vienne de "Time" et "Date" ? Auriez-vous une idée sur le sujet ?

    Je vous remercie par avance,

    Vincent C.

  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 Vincent_Ca Voir le message
    Pensez-vous que le problème vienne de "Time" et "Date" ? Auriez-vous une idée sur le sujet ?
    Comme tu ne prends que la moitié des chiffres de "Time", tu ne peux pas l'accuser d'être fautif et la vitesse d’exécution d'une macro fait que la partie gauche se retrouve obligatoirement égale sur 2 prises de temps successives.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Vincent_Ca Voir le message
    Je ne pense pas que le problème vienne de la rapidité d’exécution du code car j'ai testé avec un "Sleep" à 300ms juste avant la définition du n° de transaction, et le problème survient tout de même.
    300 ms, par nature, c'est inférieur à 1 s.
    Ce n'est donc pas ça qui garantira ton numéro unique.
    mets ton Slep à plus de 1 s si tu veux que le test soit probant.

  4. #4
    Candidat au Club
    Homme Profil pro
    Responsable
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Responsable

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut
    Bonjour à tous les deux,

    Tout d'abord je vous remercie pour vos réponses.

    Citation Envoyé par anasecu Voir le message
    Bonjour


    Comme tu ne prends que la moitié des chiffres de "Time", tu ne peux pas l'accuser d'être fautif et la vitesse d’exécution d'une macro fait que la partie gauche se retrouve obligatoirement égale sur 2 prises de temps successives.
    En effet, ça tombe sous le sens, malheureusement j'avais également fait le test sans limite de caractères et je me suis retrouvé dans la même situation. Pour la partie gauche, il s'agit du jour, je pense que tu voulais parler de la partie droite.

    Citation Envoyé par Menhir Voir le message
    300 ms, par nature, c'est inférieur à 1 s.
    Ce n'est donc pas ça qui garantira ton numéro unique.
    mets ton Slep à plus de 1 s si tu veux que le test soit probant.
    En ayant fait le test, c'est bien plus probant, mais encore plus long que le Do While au final, surtout sur une grosse quantité d'itérations dans un For...Next.

    Je vais rester sur la boucle, qui m'assure un numéro de transaction unique entre chaque ajout.

    Merci encore à tous deux d'avoir pris le temps de me répondre.

  5. #5
    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 Vincent_Ca Voir le message
    Pour la partie gauche, il s'agit du jour, je pense que tu voulais parler de la partie droite.
    Je parlais bien de la partie gauche de time celle qui ne varie que très lentement.

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

Discussions similaires

  1. [PayPal] Numéro de transaction client
    Par Kontas dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 22/11/2013, 00h53
  2. [Transact SQL] Numéro du jour de la semaine
    Par jowsuket dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/01/2009, 14h58
  3. récuperation d'un numéro de téléphone
    Par herzleid dans le forum Delphi
    Réponses: 4
    Dernier message: 17/07/2007, 09h25
  4. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

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