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 :

Crash du macro à l'execution


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 6
    Par défaut Crash du macro à l'execution
    Bonjour,

    Dans le cadre d'une analyse bibliographique je suis amené à trier un certain nombre de données sur excel, des noms d'auteurs ,leurs premières dates de parutions,...

    Pour ceci j'ai codé ce macro :

    //
    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
    Sub Date_premire_parution_auteur()
    '
    ' Date_premire_parution_auteur Macro
    '
    Worksheets("Auteur CSV").Activate
    Dim Current_name_bdd As Integer
    Dim old_year As Integer
    Dim new_year
    Dim match As Integer
     
    ' 17113 Current_name_bdd
    ' 6400 Row old_year
    ' 69 Col
     
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    old_year = 2019
    For Current_name_bdd = 1 To 20
           old_year = 2019
           Row = 6400
           Col = 3
           match = 0
           Do While match = 0
                 If Cells(Row, Col).Value = "" Then
                         Row = Row - 1
                         Col = 3
                 Else
                         If Cells(Row, Col).Value = Cells(Current_name_bdd, 1).Value Then
                         Cells(Current_name_bdd, 2).Value = Cells(Row, 70).Value
                         match = 1
                         End If
                 End If
           Loop
    Next
    End Sub
    //

    Cependant peu importe le nombre d'itération que je mets pour la première boucle for, celui-ci crash et ne réponds plus tard que si la bouche n'est pas trop longue (typiquement 10 itérations)

    Je souhaitais savoir si quelqu'un peut identifier le problème, sachant que je suis novice et que c'est ma première macro

    Merci bien !

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    tout ce qui est "immobile" reste en dehors de la boucle

    la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Current_name_bdd = 1 To 20
     
    next Current_name_bdd
    OUPS , , première erreur ...next tout seul...

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    old_year = 2019
    Row = 6400
    Col = 3
    match = 0
    çà bouge pas !! .. alors en dehors de la boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Current_name_bdd = 1 To 20
       Do While match = 0
     
        Loop
    next Current_name_bdd
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if Cells(Row, Col).Value = "" Then
    Row = Row - 1
    Col = 3
    Col = 3 ... çà bouge pas ...alors...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    For Current_name_bdd = 1 To 20
       Do While match = 0
          If Cells(Row, Col).Value = "" Then
             Row = Row - 1
          Else
             If Cells(Row, Col).Value = Cells(Current_name_bdd, 1).Value Then
                Cells(Current_name_bdd, 2).Value = Cells(Row, 70).Value
                match = 1
             End If
          End If
        Loop
    next Current_name_bdd
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 6
    Par défaut
    Exact je me suis trompé sur le Col je change ca !

    Je suis passé aux balises Code, c'est plus lisible, désole encore c'est mon premier post

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       Do While match = 0
          If Cells(Row, Col).Value = "" Then
             Row = Row - 1
          Else
             If Cells(Row, Col).Value = Cells(Current_name_bdd, 1).Value Then
                Cells(Current_name_bdd, 2).Value = Cells(Row, 70).Value
                match = 1
             End If
          End If
        Loop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(Row, Col).Value = Cells(Current_name_bdd, 1).Value Then
    si ce n'est pas vérifié tu ne fais rien et tu retournes au test If Cells(Row, Col).Value = "" Then, qui n'est toujours pas vérifié non plus (Row,Col inchangé), et ce indéfiniment (enfin jusqu'à pile pleine et erreur).
    Et si le cas peut se présenter il faut prévoir une sortir si la colonne est entièrement vide. Row=0 ça ne passera pas.
    eric

  7. #7
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Mars 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 6
    Par défaut
    Ah !

    Je pensais que le next incrémentait tous seule la variable de la bouche for associé, merci !

    Cependant le programme plante toujours en rajoutant Current_name_bdd à côté de Next


    PS : Pour ton deuxième message de ce côté là je suis juste, je dois réinitialiser ces valeurs à chaque tour de boucle for pour reparcourir mon tableau d'auteurs

Discussions similaires

  1. [XL-2007] Macro s'execute en fonction d'heure
    Par tsrsi2006 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/09/2011, 18h56
  2. [XL-2003] ne pas "voir" la macro s'executer
    Par djoumusic dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/02/2010, 21h10
  3. Réponses: 6
    Dernier message: 09/10/2009, 15h54
  4. Pourquoi ma macro s'execute lentement ?
    Par thomas.trabaries dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/11/2008, 10h23
  5. Réponses: 5
    Dernier message: 12/03/2006, 19h40

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