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 :

un Probleme indecelable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut un Probleme indecelable
    Bonjour à tous, j'essai de débuguer un probleme et je ne voie vraiment pas ou cela peut être. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub scanner()
        Dim i As Integer
        Dim reference, scan As String
        reference = "vide"
        scan = InputBox("saisir reference", "scan reference", "entrer reference")
        i = 3
        Do While scan <> reference Or reference <> "fin"
            reference = Cells(1, i).Value
            i = i + 1
        Loop
    End Sub
    Mon programme demande à l'utilisateur de saisir une réference et mon programme la cherche dans la 1ere colonne jusqu'à ce qu'il la trouve.
    Visiblement le soucis se trouve dans la boucle while (ce que dit le debuggeur).

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Je suppose que dans ta derniere colonne tu as le mot fin... donc tu devrais mettre un and au lieu de ton OR

    Puis:

    Ici tu boucles sur les colonnes et non sur les lignes... c'est à dire que tu vas chercher sur la première ligne... est-ce ce que tu veux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub scanner()
        Dim i As Integer
        Dim reference, scan As String
        reference = "vide"
        scan = InputBox("saisir reference", "scan reference", "entrer reference")
        i = 3
        Do While ((scan <> reference) and (reference <> "fin"))
            reference = Cells(i, 1).Value
            i = i + 1
        Loop
    End Sub
    Sinon tu as un truc plus simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub scanner()
    Dim scan As String
    scan = InputBox("saisir reference", "scan reference", "entrer reference")
    MsgBox (Range("A1:A65000").Find(scan))
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut
    Merci pour ta réponse, c'était bien ça le probleme après pour ton deuxième programme, je doute que ce soit très performant car j'ai plus de 500 lignes à scanner et plus de 500*30 cellules (et j'aimerai faire bien d'autres choses dans ce programme). Alors je sais pas trop car je suis débutant mais est ce bien d'utiliser cette option dans mon cas(si je recherche la performance et la vitesse d'execution)? Aussi j'ai besoin de stocker la ligne de la reference et la fonction msgbox ne fait pas ça je pense..

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Un find ira dix fois plus vite qu'une boucle toute bête et trente fois plus vite qu'une boucle complètement bête qui va tester deux conditions avec des tests de strings à chaque itération....

    même si pour 500 lignes, la différence sera de l'ordre du dixième de secondes..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub scanner()
    Dim scan As String
    scan = InputBox("saisir reference", "scan reference", "entrer reference")
    ligne = Range("A1:A65000").Find(scan).row
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut
    Ok je vais essayer. et question peut être bête mais si j'ai 2 fois la référence dans mon tableau, le find me donne un moyen de le voir ou pas?

    Aussi j'ai un autre problème qui n'a rien a voir mais tu pourra peut être m'aider:
    J'ai un programme qui tourne constament qui est le programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ...
    End Sub
    A chaque fois que je lance une autre macro, ce programme plante et ouvre une fenetre (car il tourne en continu je suppose). Y a-t-il un moyen de contourner cela?

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    .findnext te permet de voir s'il y en a plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.enableevents=false
    bloque tes procédures évenementielles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.enableevents=true
    les réactive

    A utiliser dans tes macros

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

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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