Corriger ce bout de code VBA

Bonjour Forum,

PJ : capture d'écran, nombre de lettres comptées de gauche à droite

J'ai besoin de votre aide SVP pour corriger ce bout de code, pour synchroniser un suivi. La macro s'exécute jusqu'au suivi 10, mais elle est bloquée à ce suivi. Ma demande consiste à modifier ce code pour réaliser n'importe quel numéro de suivi : 11,12,13,...etc.

Merci d'avance,

'Ces conditions sont nécessaires lorsque le numéro de suivi est supérieur ou égale à 10
        test_numberSuivi = True
        numberSuivi = Mid(bookName, 40, 3) 'récupère le numéro de suivi
        If numberSuivi Like "* " Then
            numberSuivi = Left(numberSuivi, 1) 'enlever l'espace à la fin de la variable numberSuivi
            test_numberSuivi = False
        End If

        If test_numberSuivi = False Then
            numberDSCC = Mid(bookName, 64, 7) 'récupère la DSCC
        Else
            numberDSCC = Mid(bookName, 64, 8) 'récupère la DSCC
            numberDSCC = Right(numberDSCC, 7) 'enlever l'espace au début de la variable numberDSCC

        End If
        '*******************************************************************
capture

Bonjour Bofala,

Voir le code macro sur le fichier sachant que Cells(Lig,1) représente le nom du classeur.

Note: sortie en format chaine. A convertir si besoin en nombre.

Bons tests, bonne continuation.

6correctionvba.xlsm (13.68 Ko)

Bonjour X Cellus,

J'ai inséré ton code sur le code vba de la macro. Cette dernière a des traitements sur ces 5 classeurs (en photo), peux-tu me dire stp le code qu'il faut ?

Nom du fichier où s'exécute la macro : Suivi avancement fiabilisation + New indicateur fiab 20191008

Merci beaucoup !!

sans titre

A nouveau,

Je renvoie le fichier car il manquait une ligne pour la boucle (10 à 14) alors qu'il n'existait que 4 fichiers.

Donc la boucle va de 10 à 13.

Par contre je ne peux sur photo de nom de classeurs intervenir sur un code particulier.

Ta macro a ouvert ces classeurs ou pas afin d'assurer un traitement ou elle n'est pas en capacité de le faire?

Si elle n'est pas capable d'y accéder, recherche t-elle des noms de classeurs ayant DOM et NEW dans leur intitulé? Ou uniquement les noms que tu présentes ici en photo? Et sans indication sur leur emplacement...

N'oublie pas ta demande qui est de corriger un bout de code VBA, recherche de n° et d'un numberDSCC. Ce besoin est précis. Ta photo ne semble pas faire partie de ce code et quel code devrais je ajouter?

8correctionvba.xlsm (13.43 Ko)

Bonjour,

En fait, pour exécuter la macro, il faut ouvrir ces 3 fichiers suivants :

  • Fichier Excel de stats « suivi avancement fiabilisation » : où s'exécute la macro
  • Fichier Excel exportPA
  • Fichier de la macro indicateur

Cette macro se base sur les fichiers Excel qui sont en photo (Gestion des activités...), générés par une première macro. Elle se base plutôt sur leurs noms, de gauche à droite :

Sur le code vba, tu as des chiffres comme 40, 64..

40 : comptage des lettres et espaces, ça tombe sur le chiffre de suivi (dans ce cas-là, c'est 11)

64 : il continue le comptage jusqu'à qu'il tombe sur le nom du département (Corse, DT,etc...)

40 : numéro de suivi souhaité

64 : c'est des données (départements) sur les feuilles (DOM TOM Corse et DT, regarde le fichier en PJ : Suivi avancement fiabilisation.....

Tu as aussi la macro en pièce-jointe (bout de code se trouve sur le module vba TraitementFile, vers la fin)

Merci d'avance,

capture

Bonjour bofala,

ce fichier Excel pourra peut-être t'aider :

6exo-bofala.xlsm (16.66 Ko)

merci de me donner ton avis.

dhany

Bonjour dhany,

J'ai adoré ce que tu as fait. Mais ma question est : je modifie quoi sur mon code pour l'adapter au tien ?

Comme tu as fait respectivement pour la colonne B pour détecter le numéro du suivi et la colonne C pour détecter le nom.

   'Ces conditions sont nécessaires lorsque le numéro de suivi est supérieur ou égale à 10
        test_numberSuivi = True
        numberSuivi = Mid(bookName, 41, 2) 'récupère le numéro de suivi
        If numberSuivi Like "* " Then
            numberSuivi = Left(numberSuivi, 1) 'enlever l'espace à la fin de la variable numberSuivi
            test_numberSuivi = False
        End If

        If test_numberSuivi = False Then
            numberDSCC = Mid(bookName, 64, 7) 'récupère la DSCC
        Else
            numberDSCC = Mid(bookName, 64, 8) 'récupère la DSCC
            numberDSCC = Right(numberDSCC, 7) 'enlever l'espace au début de la variable numberDSCC
        

- Si vous voulez regarder la macro, elle est en pièce-jointe (4 modules existants, module TraitementFile)

Merci,

Bonjour bofala,

voici ton fichier modifié :

à te lire pour avoir ton avis.

dhany

Bonjour dhany,

J'ai testé avec ton fichier et ça donne toujours rien. Il est toujours bloqué au suivi 10, pas de suivi 11.

Veux-tu que je t'envoie les 2 autres fichiers nécessaires pour exécuter la macro ?

Salut,

Bonsoir bofala,

pour l'envoi de tes 2 autres fichiers, merci de le proposer, mais pas maintenant ; je te le demanderai peut-être plus tard.


pour le N° DSCC, je crois que je me suis trompé : au lieu de Corse 203099 c'est seulement 203099 ; n'est-ce pas ?

ces 2 fichiers ont été modifiés en conséquence :

3exo-bofala.xlsm (15.57 Ko)

peut-être que ça pourra régler le problème ?

dhany

ajout : indique-moi clairement si le N° DSCC est Corse 203099 ou seulement 203099 ; même si c'est Corse 203099, télécharge quand même les 2 fichiers de mon post précédent, pour voir le nouveau code VBA.

dhany

ce post est pour le cas où ton problème n'est toujours pas réglé.


[quote="dans ton post de 13:37, tu"]Il est toujours bloqué au suivi 10, pas de suivi 11.[/quote]

si dans ton code VBA tu avais mis :

For i = 1 To 10
  '...
Next i

ça expliquerait le problème, et il suffirait de remplacer 10 par 11 (ou plus) ; par exemple, si tu as 1000 fichiers :

For i = 1 To 1000
  '...
Next i

mais ton code VBA utilise cette boucle :

While unFichier <> "" 'Boucle qui effectue les traitements sur tous les fichiers du dossier
  '...
Wend

alors j'comprends pas pourquoi ça s'arrête à 10 et ça veut pas faire la suite !

dhany

Bonjour,

Une proposition à évaluer.

Pour le numéro de suivi et le DSCC, privilégie la fonction Split pour découper ta chaîne de caractères avec l'espace pour délimiteur.

J'ai crée 2 petites fonctions pour cela :

'Fonction split : délimiteur par défaut = espace
'5 ou 6 si espace après n?
Public Function NSerie(txt) As String
Dim tbl
    tbl = Split(txt)
    NSerie = Replace(tbl(5), "n?", vbNullString)
End Function

Public Function DSCC(txt As String)
Dim tbl
    tbl = Split(txt)
    DSCC = tbl(UBound(tbl) - 1) & " " & tbl(UBound(tbl))
End Function

Modifie ta procédure ainsi :

numberSuivi = NSerie(bookName)
numberDSCC = DSCC(bookName)

Sinon,

bookName = wbook.Name, comporte l'extension du fichier (!?)

Si c'est le cas, une autre fonction pour l'éliminer.

'Nom de fichier sans extension
Public Function WBName(nm As String)
    WBName = Mid(nm, 1, InStrRev(nm, ".") - 1)
End Function

Modifie ensuite :

bookName = WBName(wbook.Name)

Cdlt.

@bofala

j'vais faire une très longue pause, alors t'étonne pas si j'vais répondre tardivement à ton prochain post.

en attendant, lis aussi la proposition de Jean-Eric, qui solutionnera peut-être ton problème ?

dhany

Bonsoir Dhany, Jean-Eric,

Je vous remercie vivement pour vos aides.

Malheureusement, j'ai testé vos 2 solutions et ça ne me donne toujours pas le résultat souhaité.

Dans un premier temps avec la macro modifiée par dhany. Et dans un second temps, en rajoutant les bouts de code de Jean-Eric, ça me donne des débogages.

A mon avis, pour que ça soit plus clair pour vous, vaut mieux que vous testez, c'est simple. Je vous laisse ce lien Drive

( https://drive.google.com/open?id=1LSfymciXZ81cMRyE1LsJSbzuGy4As47X )

Pour exécuter la macro Macro_Indicateur, il faudra ouvrir ces 3 fichiers :

  • Suivi avancement fiabilisation + New indicateur fiab 20191008 (présent dans le sous-dossier 08_10_2019, dossier Bofala V1, fichiers Excel retravaillés)
  • exportPA_20191008 (présent dans le même sous-dossier)
  • Macro_Indicateur_23072019 V3.1 (présent dans le dossier Macros)

Il faudra exécuter la macro Indicateur sur le fichier Suivi avancement fiabilisation + New indicateur fiab 20191008 :

Suivi 11 / Date à saisir (08_10_2019).

Regardez le fichier PDF procédure étape par étape, il explique bien toute la procédure de la macro.

Merci d'avance,

Re,

Il faudra exécuter la macro Indicateur sur le fichier Suivi avancement fiabilisation + New indicateur fiab 20191008 :

C'est un fichier xlsx !...

Sinon, mets en ligne que les fichiers utiles (en respectant les dossiers, sous dossiers…)

Cdlt.

Re,

Il faudra exécuter la macro Indicateur sur le fichier Suivi avancement fiabilisation + New indicateur fiab 20191008 :

C'est un fichier xlsx !...

Sinon, mets en ligne que les fichiers utiles (en respectant les dossiers, sous dossiers…)

Cdlt.

Suite :

Les 2 (3) fonctions que j'ai crée fonctionnement parfaitement pour scinder le nom des fichiers et déterminer le numéro de série et le DSCC.

Bonjour Jean-Eric,

J'ai retesté avec ton nouveau fichier macro et ça ne marche tjrs pas. Je ne sais pas pourquoi.

Je te propose de télécharger le dossier Bofala_V1 du drive qui contient les fichiers. J'ai mis plus de fichiers (inutiles pour toi) générés par une autre macro, mais primordiales pour exécuter notre macro. Donc pour toi, je te propose de créer un dossier et mettre tout dedans.

Après, ouvre les 3 fichiers nécessaires et exécute la macro. Suite à un menu, elle te demandera de modifier un chemin, tu suis celui en photo et tu saisies cette date 08_10_2019.

Et tu verras que ça donne rien (suivi 11, sur les feuilles Excel concernées : à partir de DOM-TOM Corse jusqu'à la dernière).

Merci d'avance,

chemin de la macro

Hello ! ne m'oubliez pas haha :p :p

Bonjour Bofala,

J'ai téléchargé tes fichiers et vu un peu ce programme qui est un vrai labyrinthe. Je regarderais mieux ce week-end.

Peut être les fichiers de destination sont calibrés pour l'instant pour ne recevoir que jusqu'à 10 et pas au delà. La présence d'une colonne grise dont le but est d'être une colonne butoir sur ces fichiers m'interpelle.

Il faudra du temps pour le faire tourner sur déjà son propre ordi et voir ensuite sur d'autres. Mais peut être pour Noël qui sait?

A suivre...

Rechercher des sujets similaires à "corriger bout code vba"