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 :

Do Loop qui ne s'arrete pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut Do Loop qui ne s'arrete pas
    Bonjour tout le monde!
    Je suis debutant en programmation VBA, mais pour mon boulot j'ai du bricolé un pti macro qui reorganize la table a l'aide de DO Loop. Le probleme: Une fois commencé, il ne veut pas s'arreter et je ne comprends absolument pas pourquoi. J'ai besoin d'aide et J'envoie le signal SOS aux gourous d'informatique presents sur ce forum!!

    Voila 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
    Sub TechT2()
     
     Worksheets("Technologies").Select
     
        x = 3
        y = 2
     
     
      Do Until Cells(x, 1) = "EndOfFile"
     
         Sheets("TechTable").Activate
     
        Cells(y, 1).Value = Sheets("Technologies").Cells(x, 1).Value
     
        If Sheets("Technologies").Cells(x, 3).Value <> "" Then
        Sheets("TechTable").Cells(y, 2).Value = Sheets("Technologies").Cells(x, 3).Value
        Else
        Sheets("TechTable").Cells(y, 2).Value = "N"
        End If
        If Sheets("Technologies").Cells(x, 8).Value <> "" Then
        Sheets("TechTable").Cells(y, 3).Value = Sheets("Technologies").Cells(x, 8).Value
        Else
        Sheets("TechTable").Cells(y, 3).Value = "n/a"
        End If
    x = x + 1
        y = y + 1
       Loop
    End Sub
    Merci d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ce problème est surement du au ton utilisation intensive de select , activate... .

    lorsque tu accède à une cellule précise la feuille concernée...

    par exemple au début de ton code tu déclare 2 variables qui pointe vers tes feuilles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim fTo as Worksheet 
    Dim fTa as worksheet
    set fTo = Thisworkbook.Sheets("Technologies")
    set fTa = Thisworkbook.Sheets("TechTable")
    et tu utilise ensuite ces variables pour accéder à tes cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (...)
      Do Until fTo.Cells(x, 1) = "EndOfFile"
     
         fTa.Cells(y, 1).Value = fTo.Cells(x, 1).Value
    (...)

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut
    Super! Apparemment ca marche avec les modifications que tu as proposé!!! Merci bcp! Il ne me reste que changer une 50 des lignes!

    J'ai juste une question:
    Et pourquoi ca ne marche pas avec select et activate?

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    cela ne marche pas car il y as une erreur dans ton code ... dans la ligne

    Do Until Cells(x, 1) = "EndOfFile"tu accède aux cellules de la feuille active... et au premier passage c'est bon grâce au select qui précède.. mais pour les autres passage cela dépend des select effectués dans ta boucle...

    Supprimer tous tes select, activave, accès direct aux object actif : ActiveCell, cells, ActiveSheet... te permettra d'éviter ce genre d'erreur en t'assurant d'agri sur la bonne cellule dans la bonne feuille du bon classeur...

    Pense aussi que tu as quelqu'un devant l'écran qui exécute ta macro .. et celui-ci peu à tout moment changer de feuille ou de classeur actif avec les conséquences que tu peu imaginer lorsque tu accède à l'élément actif (qui n'est donc pas forcément celui que tu as activé dans ton code..)

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 17
    Par défaut
    D'accord... je maintenant c'est bcp plus claire. Merci bcp de ton aide. J'aurai de quoi m'occuper le reste de week-end

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

Discussions similaires

  1. job qui ne s'arrete pas
    Par oudin.charles dans le forum Exécution et industrialisation
    Réponses: 3
    Dernier message: 25/06/2009, 19h32
  2. Interval qui ne s'arrete pas (dans un loader)
    Par megartaud dans le forum Flash
    Réponses: 0
    Dernier message: 18/08/2008, 12h17
  3. boucle while qui ne s'arrete pas à la lecture d'un zero
    Par malikoo dans le forum Général Python
    Réponses: 14
    Dernier message: 04/07/2007, 10h48
  4. Boucle qui ne s'arrete pas
    Par pierrot67 dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/03/2007, 10h19
  5. [wxPython] Application qui ne s'arrete pas....
    Par Mr Hyde dans le forum wxPython
    Réponses: 9
    Dernier message: 10/11/2005, 16h28

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