Bug variable module

Bonjour à tous je viens car j'ai un souci et je m'arrache les cheveux depuis toute à l'heure :

Je lance mon fichier j'ai un rectangle associé à un macro :

Sub process()

WB_Soud = "admin2.xlsm"

TA_For = Workbooks(WB_Soud).Worksheets("Rech_lot").Range("C13")
TA_Sou = Workbooks(WB_Soud).Worksheets("Data_lot").Range("A2").Value
TA_Fi = Workbooks(WB_Soud).Worksheets("Data_lot").Range("B27").Value
nom = Workbooks(WB_Soud).Worksheets("Rech_lot").Range("C13")
If TA_For = "Oui" Or TA_Sou = "Oui" Or TA_Fi = "Oui" Then
Call gestion_variable
Else
MsgBox ("pb")
End If
End Sub

Je ne comprends pas pourquoi quand je lance process via mon bouton il ne se passe rien :

pas de msgbox rien du tous. Quand je passe sur mes variables ils me dit "vide"

et quand je mets un msgbox juste après sub process() sa passe. Je suis complètement perdu. merci de votre aide

Bonjour

WB_Soud est le fichier qui contient la macro Process ? ou c'est un autre fichier

Vous avez une requete sur un serveur ? On a des erreurs renvoyées par excel qui font mention d'une requete SQL - Serveur "srvcegid"

Cordialement

c'est bien le fichier contenant la macro. il y a des requêtes power query mais qui ont uniquement un rapport avec d'autres feuilles non utilisées pour mon problème.

merci de vous pencher sur le cas

Pour le code, essayez comme ceci :

Sub process()
Dim TA_For As String, TA_Sou As String, TA_Fi As String
Dim nom

With ThisWorkbook
    TA_For = .Worksheets("Rech_lot").Range("C13")
    TA_Sou = .Worksheets("Data_lot").Range("A2").Value
    TA_Fi = .Worksheets("Data_lot").Range("B27").Value
    nom = .Worksheets("Rech_lot").Range("C13")
    If TA_For = "Oui" Or TA_Sou = "Oui" Or TA_Fi = "Oui" Then
        Call gestion_variable
    Else
        MsgBox ("pb")
    End If
End With
End Sub

Une remarque : Dans votre feuille Rech_lot vous avez une cellule fusionnée en C13. Je ne comprends pas pourquoi vous utilisez 4 colonnes alors qu'une seule suffit. Idem pour les lignes 13 et 14.
Gardez en mémoire que les fusions sont déconseillée avec VBA. C'est toujours source d'erreur. Je vous conseille de modifier votre fichier comme la vue ci-dessous où j'ai ramené la recherche en C12 au lieu de C13 et supprimé les colonnes et lignes en trop

Dites moi pour le code

Edit Dan : Supprimé image suite à demande de Skynet57380

merci beaucoup je vais regarder par contre pouvez vous juste supprimer l'image j'ai oublié d'enlever le logo. Désolé et merci encore

1

En faite, je ne comprends plus rien dans tout mon fichier plus aucune variable ne se charge. Il faut que j'essaye sur un autre ordinateur car c'est très bizarre j'ai jamais eu ça

je ne comprends plus rien dans tout mon fichier plus aucune variable ne se charge. Il faut que j'essaye sur un autre ordinateur car c'est très bizarre j'ai jamais eu ça

Si vous avez un souci avec les variables, vous devriez moins avoir l'affichage de MSGBOX "pd"

Voici ce que j'ai avec votre fichier mais en ayant changé C13 en C12 (comme discuté avant)

presse papier03

Question : pourquoi votre macro est dans le module 2, alors que dans le fichier posté, elle est dans le module Correction que je ne vois pas dans votre vue d'ailleurs.

J'ai trouvé le problème venait je pense de la déclaration de WB_soud qui ne permettait pas de retrouver le fichier. MSG box du coup c'est ouvert correctement.

PS j'avais un autre module car j'ai essayé de le couper coller dans un nouveau module pour voir si ce n'était pas un bug du fait du nom similaire de module et procédure (correction)

En revanche, je suis à présent bloqué à un autre endroit :

Sub Correction_all()
Dim fso As Object
Set fso = CreateObject("Scripting.fileSystemObject")

WB_Soud = "admin2.xlsm"
'///variable///
TA_For = Workbooks(WB_Soud).Worksheets("Data_lot").Range("B25")
TA_Sou = Workbooks(WB_Soud).Worksheets("Data_lot").Range("B26")
TA_Fi = Workbooks(WB_Soud).Worksheets("Data_lot").Range("B27")
nom = Workbooks(WB_Soud).Worksheets("Rech_lot").Range("C13")

'/////////Formage/////////
If TA_For = "oui" Then 'si anomalie formage correction formage
WB_Soud = "admin2.xlsm"
nom = Workbooks(WB_Soud).Worksheets("Rech_lot").Range("C13")
chemin_stat_ctrl = "\\srvcegid\200\Statistique_erreur\Controle_Err\"
chemin1 = "\\Srvcegid\200\CTRL\"
chemin_err = "\\Srvcegid\200\CTRL\Err\"
Chemin1local = "Y:\Formage_Soudure_Finition\Copie CSV\Ordre de production\Formage\"
NomCheminSave1 = chemin1 & nom & "_" & Format(Now(), "hhmmss") & "For"
NomCheminSave1local = Chemin1local & nom & "_" & Format(Now(), "hhmmss") & "For"

Workbooks.Add

For J = 1 To 6
Cells(1, J) = Workbooks(WB_Soud).Worksheets("Data_lot").Cells(5, 2 + J)
Next

ActiveWorkbook.SaveAs Filename:=NomCheminSave1, FileFormat:=xlCSV, CreateBackup:=False, local:=True
ActiveWorkbook.SaveAs Filename:=NomCheminSave1local, FileFormat:=xlCSV, CreateBackup:=False, local:=True
fso.filemove chemin_err & nom & "*" & "For.csv", chemin_stat_ctrl & nom & "For.csv"
fso.DeleteFile chemin_err & nom & "*" & "For.log"
ActiveWorkbook.Close
End If

il me dit sub ou fonction non définie et en regardant je vois pas ou peut être l'erreur.

J'ai trouvé le problème venait je pense de la déclaration de WB_soud qui ne permettait pas de retrouver le fichier. MSG box du coup c'est ouvert correctement.

Dans le code que je vous ai proposé, il n'y a pas de Ws_soud déclaré, pourtant vous m'écriviez avoir une erreur.

En revanche, je suis à présent bloqué à un autre endroit :

Pourquoi laissez vous à nouveau wB_soud ?? Cela ne sert à rien puisque votre fichier contient le code.
Remplacez déjà tous les Workbook(WB_Soud) par Thisworkbook

Sinon vous êtes bloqué par quoi et le code s'arrête sur quelle ligne ?

Il me dit que le chemin d'accès est introuvable : Pourtant j'ai vérifié mes variables chemin_err et chemin_stat_ctrl il bloque au fso.movefile.

Pour infos mon fichier est présent et se nomme SECVC6009_160228For.csv

nom = Workbooks(WB_Soud).Worksheets("Rech_lot").Range("C13")
chemin_stat_ctrl = "\\srvcegid\200\Statistique_erreur\Controle_Err\"
chemin1 = "\\Srvcegid\200\CTRL\"
chemin_err = "\\Srvcegid\200\CTRL\Err\"
Chemin1local = "Y:\Formage_Soudure_Finition\Copie CSV\Ordre de production\Formage\"
NomCheminSave1 = chemin1 & nom & "_" & Format(Now(), "hhmmss") & "For"
NomCheminSave1local = Chemin1local & nom & "_" & Format(Now(), "hhmmss") & "For"
 Workbooks(WB_Soud).Activate

        Workbooks.Add

        For J = 1 To 6
        Cells(1, J) = Workbooks(WB_Soud).Worksheets("Data_lot").Cells(5, 2 + J)
        Next

ActiveWorkbook.SaveAs Filename:=NomCheminSave1, FileFormat:=xlCSV, CreateBackup:=False, local:=True
ActiveWorkbook.SaveAs Filename:=NomCheminSave1local, FileFormat:=xlCSV, CreateBackup:=False, local:=True
Dim fso As Object
Set fso = CreateObject("Scripting.fileSystemObject")

fso.MoveFile chemin_err & nom & "*" & "_For.csv", chemin_stat_ctrl & nom & "For.csv"
fso.DeleteFile chemin_err & nom & "*" & "_For.log"
ActiveWorkbook.Close

Bonjour

En utilisant la fonction "Scripting.filesystemobject", je pense que vous devez activer la référence "Microsoft Scripting dictionnary"

Pour l'activer vous devez allez dans l'éditeur VBA -> Menu Outils / Reference

Dans l'attente de votre retour

Rem : A l'occasion, pouvez-vous faire une petit tour dans vos fils encore ouverts (https://forum.excel-pratique.com/membre/87607) et les clôturer si terminés. Merci de votre participation !

J'ai bien activé Microsoft Scripting dictionnary. Or il me dit toujours chemin d'accès introuvable ou numéro ou nom de fichier incorrect. Je ne comprends pas.

même en mettant comme cela : ça ne marche pas : fso.MoveFile "\\Srvcegid\200\CTRL\Err\SECVC6009_" & "*" & "Sou.csv", chemin_stat_ctrl & "test.csv"

Et en mettant le nom exact du fichier avec le chemin ça fonctionne :

fso.MoveFile "\\Srvcegid\200\CTRL\Err\SECVC6009_100316Sou.csv", chemin_stat_ctrl & "test.csv"

Dans votre code précédent --> https://forum.excel-pratique.com/s/goto/1014777

Je vois que le fichier est nommé For.CSV et non Sou.CSV

Si vous testez comme ceci --> fso.MoveFile "\\Srvcegid\200\CTRL\Err\SECVC6009_*" & "Sou.csv" ?

C'est la référence 100319 qui est le souci. Vous la prenez de quel endroit dans votre fichier ?

oui en faite pour faire simple j'ai trois étapes dans mon code : For, Sou et Fi. La je fais mon test sur l'étape Sou. Le fichier dont ont parle se situe dans un dossier erreur. Lorsqu'il est mis dans ce dossier par le serveur il est renommé en ex : SECVC6009+Date+Sou.csv.

J'ai bien une fonction qui recherche tout les fichier du dossier erreur contenant SECVC6009"*"Sou.csv mais cette me renvoi juste un true ou false :

If FichierExiste(formage) = True Then

Workbooks("admin2.xlsm").Worksheets("Rech_lot").Range("K13") = "OK"
Else
Workbooks("admin2.xlsm").Worksheets("Rech_lot").Range("K13") = "KO"

Concrètement mon code sert à ça :

Je tape un numéro de lot : num = SECVC6009 il recherche dans le dossier erreur si j'ai au moins un fichier qui contient : num "*" For puis un autre qui contient num "*" Sou et ainsi de suite.

Puis à ce moment je sais que c'est à tel étape qu'il y a eu un problème. Le soft résout le problème et la vient le moment ou je dois déplacer le fichier du dossier erreur vers résolu. Mais c'est vrai que si ça complique grandement la chose je demande la suppression de la date dans le nom de fichier. Mais bon j'aurai aimer comprendre pourquoi ça ne fonctionne pas..

Ok mais en testant comme je vous ai dit dans mon post précédent, cela ne fonctionne toujours pas ?
Essayez aussi ceci --> fso.MoveFile "\\Srvcegid\200\CTRL\Err\SECVC6009_*Sou.csv"

1. Formage correspond à quoi
2. * remplace bien la date dans le nom du fichier ?

Est-ce la suppression concerne tous les fichiers dont la variable "nom" correspond à SECVC6009 et ce peu importe la date ?

Votre solution fonctionne la dernière : fso.MoveFile "\\Srvcegid\200\CTRL\Err\SECVC6009_*Sou.csv"

L'ennui est que \\Srvcegid\200\CTRL\Err\ est une variable : chemin_err

SECVC6009 est une variable : nom

et du coupe je n'arrive pas à adapter votre solution avec mes variables.

1. Formage est une étape de production. Quand elle se finalise un fichier est créé : ex SECVC6009_For121021.csv si l'étape est un succès ce fichier va dans bkp si c'est un échec le fichier va dans err. C'est la même chose pour les étapes suivantes : soudure et finition sauf qu'un autre fichier est créé avec Sou ou FI à la place de For.

2. oui * remplace la date dans le nom de fichier

Pour finir oui la suppression concerne tout les fichiers contenant le nom + Sou.csv en théorie il y en a que 1 mais si ce n'est pas le cas pas grave ils doivent tous être supprimer.

C'est bon c'est passé : fso.MoveFile chemin_err & Name & "_*Sou.csv", chemin_stat_ctrl

Je vous remercie énormément. j'en ai essayé des combinaisons pourtant.

Rechercher des sujets similaires à "bug variable module"