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 :

Arrêt de l'exécution toujours au même endroit [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut Arrêt de l'exécution toujours au même endroit
    Bonjour,
    J'ai un programme en VBA/Excel qui devrait exploiter 203 lignes d'une DB sur Excel et qui s'arrête toujours dans la 46ème ligne (et saute alors à une autre sub destinée à l'impression). Il s'agit de composer une variable string avec le contenu de la DB. La ligne 46 ne contient pas de donnée particulière. Aucune variable de contrôle n'est affectée de la valeur 46. Une variable string peut contenir env. 2 millions de caractères et ma variable n'en contient qu'environ 20.000. Quel autre élément peut provoquer cet arrêt au 46ème enregistrement ? J'ai fait des quantités de tests sans résultat. Qui peut me suggérer une solution (quelqu'un sur ce forum m'a déjà fait franchir certains obstacles mais je ne retrouve pas la discussion et ce nouveau problème me bloque maintenant) ?
    Est-ce assez clair ? Faut-il reformuler ?
    Merci pour toute aide !
    Cordialement
    Pierre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je ne vois aucun problème à la 46ème ligne!

  3. #3
    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
    Citation Envoyé par rdurupt Voir le message
    Bonjour,
    Je ne vois aucun problème à la 46ème ligne!
    ni dans le code associé d'ailleurs...

  4. #4
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    Bonsoir et merci à mes deux interlocuteurs secourables,
    Quelque chose m'échappe: je n'ai pas joint de code ni de classeur Excel, comment connaissez-vous le contenu de ma base et/ou de mon code ? Au fait je n'ai peut-être pas été assez précis: il s'agit de la 46ème ligne du tableau Excel, pas de la 46ème ligne de code. D'ailleurs ce code a passablement évolué depuis mon dernier post (que je ne retrouve pas). Pouvez-vous m'éclairer ? Merci d'avance.
    Cordialement
    Pierre

  5. #5
    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
    Citation Envoyé par pierruel Voir le message
    ... comment connaissez-vous le contenu de ma base et/ou de mon code ?..
    c'est bien ce que l'on te reproche ta question manque de précision sur ton environnement.... montre nous entre balise [code] [/code] le morceau de code qui construit ta chaîne et qui semble causer problème ... à quoi ressemble ta ligne 46 ...

    pour voir tes messages clique sur ton speudo à gauche du forum et utilise le menu "voir ses messages"

  6. #6
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    OK bbil,
    Le code compte environ 250 lignes. La concaténation destinée à constituer la variable chaîne "GED" repose sur la formule suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GED = GED & "1 TEXT Texte résumé: L'enfant" & " " & Cells(ligne, 10).Value _
    & " " & Cells(ligne, 11).Value
    .
    J'ai préféré revenir à la numérotation des colonnes en nombre absolus, la solution en relatif est plus élégante mais le risque d'erreurs est plus élevé (du moins pour moi) et le repérage des erreurs plus difficile.
    Pour obtenir la 46ème ligne de code, est-ce que je dois compter les déclarations ?

    La ligne 46 de ma base est en annexe.
    Merci de votre patience
    Cordialement
    Pierre
    Fichiers attachés Fichiers attachés

  7. #7
    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
    ok, on n'en voit pas assez la ...

    utilise tu la gestion d'erreur ? (si oui code ..)


    essai de nous mettre un code épuré montrant le fonctionnement de ta boucle ....

    comment est appelé ta fonction d'impression ? (code associé..)

  8. #8
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    Re.
    D'abord une rectification: dans mes recherches du bug, j'ai fait un essai sur la moitié des lignes de ma DB, soit 103 lignes, ce qui me donnait systématiquement 46 enregistrements reportés dans la variable "GED" au lieu de 103. J'ai maintenant rétabli la version initiale avec 206 lignes et l'arrêt systématique se fait sur la ligne 33 de la DB.
    Elle ne contient rien de spécial non plus.

    Voici un extrait de code un peu plus fourni, avec l'entrée et la sortie de la boucle et le principe de concaténation. Ce que j'appelle "impression" est en fait un appel à une sub transformant la variable GED en fichier texte Word imprimable:
    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
    Do Until ligne = 206
    '[...]
    GED = GED & "1 TEXT Rexte résumé: L'enfant" & " " & Cells(ligne, 10).Value _
    & " " & Cells(ligne, 11).Value
    GED = GED & " " & "est né(e) le " & Cells(ligne, 12).Value
    GED = GED & " " & "au lieu de" & " " & Cells(ligne, 16).Value
    GED = GED & ", commune de" & " " & Cells(ligne, 17).Value & "." & Chr(10)
    '[...]
    If Cells(ligne, 9).Value = "" Then
    GoTo fin
    Else
    If Cells(ligne, 9).Value <> "" Then
    GED = GED & "Acte du " & Cells(ligne, 9).Value
    End If
    End If
    fin:
    GED = GED & Chr(10)
    ligne = ligne + 1
    compteur = compteur + 1
    Loop
    Call imprime_GED(GED)
    End Sub
    _______________________________________________________________________
    Sub imprime_GED(GED)
    ' Crée un gedcom dans Word en utilisant Automation (liaison tardive)
    Merci à qui voudra bien se pencher sur ce pensum !
    Cordialement
    Pierre

  9. #9
    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
    Bon en suppossant que tu sorte par ton goto fin. Rajoute un msgbox pour controler ta sortie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msgbox cells(ligne,9).parent.name & " ! " & cells(ligne,9).address
    Goto fin
    Ps : j'ecrit cela sur mon smartphone j'espère eviter des erreurs de syntaxes..

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim r As Range, ligne As Integer, GED As String
    Set r = ThisWorkbook.Sheets("Feuil1").UsedRange
    For ligne = 2 To r.Rows.Count
        GED = GED & "1 TEXT Texte résumé: L'enfant" & " " & r(ligne, 10).Value & " " & Cells(ligne, 11).Value
    Next
    MsgBox GED
    End Sub

  11. #11
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut
    Merci à bbil et rdurupt,
    A bbil: Merci pour cet apport; je ne connais pas ces éléments, donc je ne suis pas en mesure d'interpréter les résultats.
    NB: La concaténation se termine toujours par le contenu de la cellule Q34, soit le 17ème champ du 32ème enregistrement de ma base de données, qui contient la commune de l'acte de naissance, "Saint-Appolinaire-de-Rias" [07] tronquée après le 2ème trait d'union.
    Je sors toujours après la capture du contenu de la cellule "cells(ligne, 9)", le msgbox précédant la ligne "goto fin" (cells(ligne, 9) vide) ne donne rien. Dans le premier cas, le message est
    "ECFN_Données $I$3"
    "ECFN_Données" est le nom de ma feuille de données
    La cellule $I$3 appartient à la première ligne remplie du tableau, elle contient la date de naissance "21.04.1793".
    En cliquant sur le OK du msgbox, on parcourt toutes les cellules de la colonne I (champ 9 du tableau: date de l'acte de naissance): $I$3, $I$4, $I$5,...jusqu'à $I$205.
    (Au fait, existe-t-il un moyen de quitter un msgbox sans parcourir toutes ses valeurs !?)
    La cellule désignée par l'élément "address" ne coïncide donc pas avec l'endroit où la concaténation s'interrompt. Elle ne se trouve pas dans la même colonne.
    Que concluez-vous de tout cela ?
    Merci d'avance
    Cordialement
    Pierre

    Merci à rdurupt et bbil
    A rdurupt:
    Votre approche fait appel à des connaissances en VBA qui dépassent mon modeste niveau. Il est probable que cette approche permettrait de simplifier passablement mon code mais pour m'en assurer il faudrait que j'y consacre plus de temps que je n'en ai à disposition. A moins qu'il suffise de faire un copier-coller ?
    Je ferai l'essai dans la journée.
    Merci pour la solution que vous proposez. Pensez-vous qu'elle pourrait éviter cet arrêt systématique et intempestif ?
    Cordialement
    Pierre

    Bonjour bbil et rdurupt,
    A la faveur d'une insomnie j'ai testé la solution de rdurupt en y incorporant le msgbox
    proposé par bbil.
    L'arrêt systématique continue de se produire !
    Avec la "sub test()" r.Rows.Count donne 235 alors que les lignes 206 à 235 sont vides.
    Le msgbox donne, placé avant goto fin, $I$206 (et les clics se poursuivent jusqu'à $I$235)
    Placé après date de l'acte, il donne $I$3.
    L'arrêt se produit après la cellule ligne 51, colonne 66.
    A quel saint me vouer ?
    Cordialement
    Pierre

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Vraisemblablement on a dépassé la ligne 46!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim r As Range, ligne As Integer, GED As String
    Set r = ThisWorkbook.Sheets("Feuil1").range("A1").currentregion
    For ligne = 2 To r.Rows.Count
        GED = GED & "1 TEXT Texte résumé: L'enfant" & " " & r(ligne, 10).Value & " " & Cells(ligne, 11).Value
    Next
    MsgBox GED
    End Sub
    Autant que faire ce peut, évites les Goto.

    En plus ton Goto n'est pas utile!
    If trim("" & Cells(ligne, 9).Value )<> "" Then GED = GED & "Acte du " & Cells(ligne, 9).ValueTu fais un goto si vide et un traitement si pas vide! Donc seule le pas vide nous intéresse!

    Est-ce que ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Cells(ligne, 9).Value = "" Then
    GoTo fin
    Else
    If Cells(ligne, 9).Value <> "" Then
    GED = GED & "Acte du " & Cells(ligne, 9).Value
    End If
    End If
    fin:
    c'est pas la même chose que ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If trim("" & Cells(ligne, 9).Value )<> "" Then GED = GED & "Acte du " & Cells(ligne, 9).Value
    Dernière modification par Invité ; 22/09/2015 à 08h04.

  13. #13
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    Bonjour rdurupt,
    Ton dernier post m'a pris de vitesse; j'avais avancé de mon côté et j'ai trouvé une chose intéressante. Je la poste en attendant d'appliquer tes derniers conseils. Pour le goto, ok il faut l'éviter, surtout lorsque la plupart des miens sont inutiles. Merci.
    Je me suis livré à deux tests sur la base du code revu selon le principe proposé par toi. Le premier consiste à reporter le contenu obtenu à partir de chaque enregistrement dans une cellule d'une feuille "test" du même classeur.
    Le second consiste à stocker le contenu de chaque enregistrement dans un tableau mesged(indice), cellule par cellule.
    Il s'agit ensuite de concaténer le contenu des 203 cellules, celles de la feuille "test" et cells du tableau mesged(indice).
    Voici les 4 extraits de code correspondants

    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
    'stockage
    ThisWorkbook.Sheets("test").Activate
    For L = 3 to 205
    Cells(L, C).Value = GED
    L = L + 1
    GED = ""
    ThisWorkbook.Sheets("ECFN_Données").Activate
    Next
    '[...]
    'concaténation
    ThisWorkbook.Sheets("test").Activate
    For L = 1 To 203
    texte = texte & " " & Cells(L, C).Value
    Next
     
    '[...]
     
    'stockage
    For indice = 0 to 202
    mesged(indice) = GED
    If GED = "" Then
    Stop
    End If
    'Stop
    indice = indice + 1
    Next
     
    '[...]
     
    'concaténation
      For indice = 1 To 203
            GED = mesged(indice)
            texte = texte + GED
            Next
    Dans les 2 cas les 203 enregistrements sont reportés intégralement respectivement dans 203 cellules de la feuille "test" et dans les 203 cellules du tableau mesged(indice) .
    Mais dans les 2 cas le report dans Word s'arrête à l'enregistrement No 37.
    Donc la variable dans laquelle devraient se concaténer les valeurs des 203 cellules de la feuille "test" de même que les 203 cellules du tableau mesged(indice) ne les contient pas tous, pour une raison que je ne m'explique pas.
    Merci de bien vouloir te pencher à nouveau sur ce phénomène, sauf que si tu préfères ça peut attendre que j'aie digéré ton dernier post.
    Cordialement
    Pierre

  14. #14
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi ligne 25 as-tu cette instruction indice = indice + 1 alors que la variable de la boucle est indice. Une boucle sert justement à indicer sa variable et donc en ajoutant une incrémentation de 1 cela équivaut dans ce cas là à une boucle avec un pas de 2
    Pour t'en convaincre, fais tourner cette petite procédure et ensuite fais la tourner à nouveau en mettant une apostrophe ligne 5 (i=i+1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub t()
     Dim i As Integer
     For i = 1 To 10
      MsgBox "Valeur de i = " & i
      i = i + 1
     Next
    End Sub
    A lire éventuellement La gestion des boucles dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  15. #15
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    Bonjour,
    Merci à Philippe Tullier.
    Le double pas est une évidence. Merci de me la rappeler mais j'ai écrit une bonne centaine de boucle For Next et il m'arrive encore d'ajouter une incrémentation de trop ! Peut-on faire apparaître la numérotation des lignes dans l'interface BVA Excel ? Comment ?
    Je vais voir où se situe la ligne 25 et les conséquences du double pas.

    Pour rdurupt: ta nouvelle proposition consiste simplement à remplacer la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set r = ThisWorkbook.Sheets("ECFN_Données").UsedRange
    par celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set r = ThisWorkbook.Sheets("ECFN_Données").Range("A1").CurrentRegion
    Je n'ai donc eu qu'à ajouter la nouvelle ligne dans mes 2 versions et mettre une astérisque à l'ancienne.
    Dans la version qui reporte les chaînes partielles dans une feuille "test", les 203 chaînes sont reportées mais dans Word la concaténation s'arrête toujours à l'enregistrement 37.
    Dans l'autre version [avec mesged(indice)], le tableau en VBA est complet mais là Word ne récupère que 9 enregistrements.
    C'est toujours la bouteille à l'encre
    Merci d'avance pour toute aide.
    Cordialement
    Pierre

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour Pierre,
    Je vais voir où se situe la ligne 25 et les conséquences du double pas.
    La ligne 25 que j'évoque dans ma réponse n'a rien à voir avec l'éditeur VBA mais correspond à la ligne 25 du code que tu as publié sur DVP (Ne vois-tu pas que les lignes sont numérotées ?).

    Pour faire une recherche dans l'éditeur, tu fais Ctrl+F et tu tapes le mot ou la phrase cherchée en indiquant où doit avoir lieu la recherche (Procédure, Module ou Projet)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    Bonsoir Philippe Tulliez,
    J'ai testé mon code en supprimant la ligne
    indice = indice + 1.
    Du coup, tous les enregistrements reportés dans le tableau mesged(indice) sont vides !
    Je ne comprends pas pourquoi. Il y a beaucoup de chose que je ne comprends pas: c'est la différence entre un expert et un modeste amateur autodidacte .
    Cordialement
    Pierre

  18. #18
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas regardé toutes les lignes de ton code mais il est évident que ce que je t'ai signalé est un problème et je viens de voir que la ligne 5 de ta procédure publiée doit également être supprimée.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  19. #19
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En relisant ton code, je me pose des questions sur ces quelques lignes publiées au post #15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'stockage
    ThisWorkbook.Sheets("test").Activate
    For L = 3 to 205
    Cells(L, C).Value = GED
    L = L + 1
    GED = ""
    ThisWorkbook.Sheets("ECFN_Données").Activate
    Next
    En bref, tu écris dans la cellule de la ligne 3 (représentée par la variable L) de la colonne ? (quelle est la valeur de la variable C ? ) le contenu de la variable GED dont on ignore ce qu'elle contient.
    En revanche ensuite tu effaces le contenu de celle-ci et ensuite tu écris de la ligne 5 à 205 toujours en faisant un pas de 2 à cause de L=L+1 un contenu vide et de plus pour une raison qu'on ignore tu changes de feuille (ECFN_Données) une bonne centaine de fois (puisque c'est dans cette boucle) et c'est donc dans les cellules de cette feuille que tu écris une chaîne vide.

    Il ne faut pas être expert pour détecter ce problème. C'est de la simple logique
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  20. #20
    Membre éclairé Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    544
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 544
    Par défaut XL 2000: Arrêt de l'exécution toujours au même endroit
    Bonjour,
    Merci aux trois experts qui m'ont répondu à propos du problème tel que libellé sous "intitulé".
    Pour répondre à Philippe: le report dans la feuille "test", cellule Cells(L, C), se fait toujours dans la même colonne, donc C est invariable et sa valeur est 1.
    Le contenu de la variable string GED découle de la description faite dans un de mes premiers posts: c'est la concaténation des contenus d'une soixantaine de cellules constituant un enregistrement de ma base de données généalogiques, reliés entre eux (ces contenus) par des portions de texte, comme dans la première ligne:
    "L'enfant" Cells(x, y) & Cells( x-1, y-1) "est né le" .... etc. (les 2 premières cellules mentionnées fournissant le nom et le prénom de l'enfant). Et ainsi de suite sur environ 200 lignes de code.
    J'en viens à mon code: il est sûrement moche à gerber et contient encore des fautes (mais j'ai corrigé celles que vous m'avez signalées); cependant grâce à mes 2 tests, sur une feuille supplémentaire et dans un tableau VBA, j'ai la preuve qu'il ne s'arrête pas en cours d'exécution. Ma feuille de données contient 203 enregistrements et je les retrouve tous soit sur la feuille supplémentaire "test", soit dans le tableau VBA.
    Je peux donc considérer mon problème tel que libellé comme résolu et je vais poster le problème tel qu'il se pose maintenant: pourquoi le programme ne peut-il pas concaténer 203 valeurs de GED mais s'arrête à la 37ème ?
    Encore merci aux experts qui m'ont conseillé.
    Cordialement
    Pierre

    P.S. Merci encore à rdurupt pour cette ligne de code que je vais substituer à mes longs if then:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If trim("" & Cells(ligne, 9).Value )<> "" Then GED = GED & "Acte du " & Cells(ligne, 9).Value

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2010] VBA - Macro se bloque toujours au même endroit
    Par cameleon1970 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/05/2012, 21h58
  2. Réponses: 36
    Dernier message: 16/01/2009, 13h52
  3. arrêt de l'exécutable
    Par asma_tn dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/10/2007, 09h06
  4. L'ancien code (modifié) s'exécute toujours en debug
    Par frederix quest dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/08/2007, 20h04
  5. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11

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