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 :

Latence entre deux Range [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut Latence entre deux Range
    Bonjour, je viens vous redemander de l'aide car quelque chose me perturbe dans mon formulaire excel.

    Le formulaire est fonctionnel néanmoins lors de la mise en cellule de mes variables, il y a une latence.
    Je vous explique : La première cellule se remplit, il y a une latence puis les autres cellules se remplissent.

    Cela n'a aucune influence sur la bonne exécution du code mais j'aimerais tout de même régler ça, si c'est possible.

    Voici 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    Private Sub btVal_Click() 'Validation via le bouton
        Sheets("bdd").Activate
     
        '// ON INITIALISE LES VARIABLES (1 variable : 1 colonne)
        Dim nom As String, prenom As String, sexe As String, daten As Date, NLign As Long, i As Integer
        i = 0
     
        '// CONFIRMATION CASES BIEN REMPLIES - SI VIDE : MSG D'ERREUR
        If TxtNom = "" Or TxtPrenom = "" Or TxtDate = "" Or (OptH = False And OptF = False) Then
            Lbl5.Visible = True
        Else
            '// CONFIRMATION : NOM - AUCUN PB SI CELLULE REMPLIE
            nom = TxtNom
            i = i + 1
     
            '// CONFIRMATION : PRENOM - AUCUN PB SI CELLULE REMPLIE
            prenom = TxtPrenom
            i = i + 1
     
            '// CONFIRMATION : DATE DE NAISSANCE - NB CARACTERES ET FORME
            If Len(TxtDate > 10) Then
                TxtDate = Left(TxtDate, 10) 'On s'arrête à 10 caractères
            End If
     
            If IsDate(TxtDate.Value) = True Then
                daten = TxtDate.Value 'On affecte la date dans la case à une variable daten
                i = i + 1
            Else
                Lbl5.Visible = True
            End If
     
            '// CONFIRMATION : SEXE
            If OptH = True Then
                sexe = "Homme"
                i = i + 1
            Else
                sexe = "Femme"
                i = i + 1
            End If
     
            '// ON TROUVE LA LIGNE OÙ L'ON ECRIRA (montée avec xlUp)
            NLign = Range("A" & Rows.Count).End(xlUp).Row + 1 'Ici on se base sur la colonne A
            'MsgBox NLign
     
            '// ENVOIE DES VARIABLES DANS LES CELLULES
     
            If i = 4 Then
                Range("A" & NLign).Value = nom
                Range("B" & NLign).Value = prenom
                Range("C" & NLign).Value = daten
                Range("D" & NLign).Value = sexe
     
                '// ON (RE)MASQUE LES LABELS D'ERREUR - DE VALIDATION (en cas d'ajout de plusieurs personnes)
                If Lbl5.Visible = True Or Lbl6.Visible = True Then
                    Lbl5.Visible = False
                    Lbl6.Visible = False
                End If
     
                Lbl6.Visible = True
                Application.Wait Now + TimeValue("00:00:02")
                Lbl6.Visible = False
            Else
                Lbl5.Visible = True
            End If
     
        End If
     
    End Sub
    Tous les Range sont au même endroit, mais le A s'obstine à s'afficher avant les autres, si vous avez une solution à se problème, j'aimerais bien la connaître.

    Merci.

  2. #2
    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,

    en l'état, il n'y a pas de raison que la colonne A se remplisse, suivi d'un arrêt et d'un remplissage instantané des 3 autres colonnes

    tu n'auras pas des macro évènementielles dans ta feuille bdd, qui portent sur la colonne A ?

    pour y voir plus clair, peux-tu joindre une copie du classeur ? j'ai également quelques doutes sur la bonne gestion de tes erreurs dans le userform, notamment le cas où ton TxtDate n'est pas une date (mais je dois me tromper car pas le fichier sous les yeux)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    Rebonjour,

    Je n'ai aucune macros dans mon classeur, j'ai juste cet userform. Il me semble ne pas avoir de problèmes avec la date, puisque lorsqu'elle n'est pas / mal remplie, mon message d'erreur s'affiche correctement sans rajouter l'adhérent à la liste.

    Je joins mon fichier au post.

    testvba2.xlsm

  4. #4
    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
    La latence est lié à tes 2 secondes durant lesquelles tu affiches ton label de réussite d'ajout
    je n'aurai absolument pas parié sur ça, et je n'arrive pas à expliquer la chose (pas de latence en pas à pas mais latence en fonctionnement normal)

    pour contourner ce problème et ne plus utiliser Wait, tu pourrais :

    - l'afficher en cas de réussite
    - le masquer via l'évènement click du userform : quand l'utilisateur voudra ajouter une autre personne, il va très certainement cliquer sur ton userform, ça masquera le label

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    C'est vrai que c'est assez bizarre, étant donné que la latence est en plein milieu de l'affichage.. Je vais essayer de régler ça dans la journée avec ta méthode, merci!

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    (Désolé du double-post, je ne sais pas comment supprimer un post sur ce forum)

    J'ai finalement régler le système de latence du formulaire grâce à ta solution, enfin j'ai retiré l'affichage du label lors du clic dans une dex TxtBox plutôt que sur l'Userform, de ce fait je suis sûr que le label sera bien masqué.
    Je vais maintenant essayer de régler un des derniers problèmes que je rencontre : j'aimerais que, lorsque je supprime une personne du tableau, que les cellules soient décalées vers le haut de façon à ce qu'il n'y ai pas de trou dans le tableau, ou alors il faut que je trouve la solution pour remplir cette même ligne vide lors de l'ajout du prochain adhérent, je ne vois pas trop comment faire sur le coup.
    J'ai entendu parlé du changement d'Offset et je pense que cela pourrait m'être utile, il faut que je vois ça.

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

Discussions similaires

  1. Insérer un trait horizontal entre deux rangées
    Par abdel792 dans le forum Excel
    Réponses: 2
    Dernier message: 23/12/2010, 09h32
  2. Tableaux : écarts d'alignement entre deux rangées
    Par Razor82 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/05/2009, 16h03
  3. Temps de réponse entre deux sites
    Par coup dur dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 16/10/2003, 15h26
  4. Connexion entre deux ordi [Débutant]
    Par Ryadus dans le forum Développement
    Réponses: 2
    Dernier message: 12/06/2003, 21h47
  5. Réponses: 5
    Dernier message: 25/03/2003, 19h43

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