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 :

Défilement de mots dans deux texbox [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
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut Défilement de mots dans deux texbox
    Dans la colonne A de la feuille 2 j'ai au maximum 250 mots anglais avec la traduction dans la colonne B

    Je souhaite en appuyant sur un bouton "Démarrage" faire défiler ces mots dans deux texbox avec un rythme de 1 mots par seconde.

    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      For i = 1 To Worksheets("Feuil2").Range("A1:A250").End(xlDown).Row
     
                Acceuil.TextBox_English.Value = Worksheets("Feuil2").Range("A" & i)
                Acceuil.TextBox_Français.Value = Worksheets("Feuil2").Range("B" & i)
     
                Application.Wait Time + TimeSerial(0, 0, 1)
     
            Next i
    Problème :

    Cela fonctionne correctement mais uniquement en réalisant une manipulation hasardeuse ^^

    1) Cliquer sur le bouton "démarrage" dans le userform
    2) Cliquer sur l'icone excel dans la barre inférieure
    3) Ne plus rien toucher jusqu'à la fin

    Si je ne clique pas sur l'icone excel, le programme de défilement s’exécute mais n'affiche pas les mots dans la texbox.

    Hypothèse : Je pense que le userform doit être inactif lors de l’exécution du code, pour le moment je n'ai pas trouver la solution en code

    Nom : Défilement_mots.png
Affichages : 138
Taille : 64,4 Ko

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,
    Mets un "DoEvents" avant et après ton instruction 'Wait".

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    essayer avant la pause d'abord avec la fonction DoEvents et le cas échéant avec la méthode Repaint

    __________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     For i = 1 To Worksheets("Feuil2").Range("A1:A250").End(xlDown).Row
     
                Acceuil.TextBox_English.Value = Worksheets("Feuil2").Range("A" & i)
                Acceuil.TextBox_Français.Value = Worksheets("Feuil2").Range("B" & i)
                DoEvents
                Application.Wait Time + TimeSerial(0, 0, 1)
     
            Next i
    Les deux méthodes fonctionnent

    DoEvents : Bien, avec cependant le cercle bleu de la souris qui tourne en permanence durant l’exécution (Si il y a moyen de le retirer, je suis preneur).
    Repaint : Bien, sans cercle bleu de la souris mais le userform scintille de temps en temps.

    Merci pour l'information

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Au lieu de "Wait", utilise la méthode "OnTime".

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut
    Voilà le code en entier avec une ComboBox_Tps_Attente qui peut prendre la valeur 1 2 ou 3

    1) Ontime réclame une procédure Application.OnTime Now + TimeValue("00:00:01"), ......... ?, je mets quoi puisqu'il y a pas de procédure à exécuter ?
    2) Application.OnTime Now + TimeValue("00:00:01"), le 01 en gras doit prendre la valeur ComboBox_Tps_Attente.value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            For i = 1 To Worksheets("Feuil2").Range("A1:A250").End(xlDown).Row
                 
                Acceuil.TextBox_English.Value = Worksheets("Feuil2").Range("A" & i)
                Acceuil.TextBox_Français.Value = Worksheets("Feuil2").Range("B" & i)
    
                'Acceuil.Repaint ' actualise userform           
                'Application.Wait Time + TimeSerial(0, 0, ComboBox_Tps_Attente.Value)
    
                DoEvents
                Application.OnTime Now + TimeValue("00:00:01")
            Next i

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    En tête de module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Application.OnTime Now + TimeValue("00:00:01"), "ChangeTextbox"
    End Sub
    Sub ChangeTextbox()
        Dim Intervalle
        Ctr = Ctr + 1
        Intervalle = Now + TimeValue("00:00:1")
        Application.OnTime Intervalle, "ChangeTextbox"
        Acceuil.TextBox_English.Value = Worksheets("Feuil2").Range("A" & I)
        Acceuil.TextBox_Français.Value = Worksheets("Feuil2").Range("B" & I)
        If Ctr = Worksheets("Feuil2").Range("A1:A250").End(xlDown).Row Then
            Application.OnTime Intervalle, "ChangeTextbox", Schedule:=False
        End If
    End Sub

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

Discussions similaires

  1. [CakePHP] Comment faire une recherche avec deux mots dans une table
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/02/2014, 23h20
  2. Déterminer le nombre de mots dans deux fichiers de texte
    Par daniel1985 dans le forum Général Java
    Réponses: 1
    Dernier message: 14/12/2012, 11h51
  3. [XL-MAC 2011] Identifier présence d'un mot identique dans deux cellules texte de Excel
    Par Marine bleu dans le forum Excel
    Réponses: 2
    Dernier message: 28/10/2012, 12h11
  4. [RegEx] Deux mots dans deux tableaux
    Par kidas dans le forum Langage
    Réponses: 5
    Dernier message: 26/10/2009, 15h44
  5. [batch] Comment rechercher deux mots dans un fichier .txt ?
    Par koKoTis dans le forum FAQs Windows
    Réponses: 0
    Dernier message: 10/02/2009, 17h54

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