Améliorer le code
Bonjour,
Je dois m'assurer de la présence d'un fichier csv ouvert avant de convertir le csv en Excel.
Le fichier csv contient un indice monfichier(x).csv. Si je trouve un fichier ouvert avec l'indice je poursuis mon traitement sinon je teste l'indice suivant et actuellement au bout de 6 je mets un message d'erreur et je sors.
Je souhaiterai aller au delà de 6 sans avoir un gros pavé de lignes comme actuellement.
Pouvez vous m'apporter votre aide ?
Voici le code actuel :
On Error Resume Next
'-----------------------------------------------------------------
'Positionnement sur la fenêtre du fichier csv jusqu'à (6).csv au cas où
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (1).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (2).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (3).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (4).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (5).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (6).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
MsgBox "Fichier csv non ouvert ouvrez le fichier et relancez la macro"
Windows(MonFichierMacro).Close
GoTo finpgm
End If
End If
End If
End If
End If
End If
End If
'Convertion des donnéesEdit : merci de mettre le code entre balises grâce au bouton </>
Bonjour Kristof44
Normalement, tu ne devrais pas avoir besoin de ".Activate"
Comment ouvres-tu ton fichier CSV, quelle est/sont la/les ligne(s) de code
@+
On Error Resume Next
'-----------------------------------------------------------------
'Positionnement sur la fenêtre du fichier csv jusqu'à (6).csv au cas où
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (1).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (2).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (3).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (4).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (5).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
Err.Number = 0
MonFichierCsv = MonFichier & " (6).csv"
Windows(MonFichierCsv).Activate
If Err.Number <> 0 Then
MsgBox "Fichier csv non ouvert ouvrez le fichier et relancez la macro"
Windows(MonFichierMacro).Close
GoTo finpgm
End If
End If
End If
End If
End If
End If
End If
'Convertion des donnéesBonjour
Le fichier csv est ouvert par l'utilisateur suite à un export de donnée. (non ouvert via VBA)
L'utilisateur ouvre ensuite un fichier Excel contenant une macro qui effectue la conversion csv => Excel.
Désolé pour le code ... je n'avais pas vu le bouton </> pour l'inclure.
Merci pour cotre réponse.
Re,
Dans ce cas, à tester
On Error Resume Next
'-----------------------------------------------------------------
'Positionnement sur la fenêtre du fichier csv jusqu'à (6).csv au cas où
Dim Ind As Integer
For Ind = 1 To 6
MonFichierCsv = MonFichier & " (" & Ind & ").csv"
Windows(MonFichierCsv).Activate
If Err.Number = 0 Then Exit For
Next Ind
If Err.Number <> 0 Then
MsgBox "Fichier csv non ouvert ouvrez le fichier et relancez la macro"
Windows(MonFichierMacro).Close
GoTo finpgm
End If@BrunoM45
Merci de t'être penché sur mon problème.
Avec ton code, j'avais toujours le message d'erreur malgré la présence du fichier ouvert.
J'ai alors intégré une remise à 0 pour err.num dans la boucle For et ... ça marche.
Dim Ind As Integer
For Ind = 1 To 10
Err.Number = 0
MonFichierCsv = MonFichier & " (" & Ind & ").csv"
Windows(MonFichierCsv).Activate
If Err.Number = 0 Then Exit For
Next Ind
If Err.Number <> 0 Then
MsgBox MonFichierCsv & "Fichier csv non ouvert ouvrez le fichier et relancez la macro"
Windows(MonFichierMacro).Close
GoTo finpgm
End IfMerci beaucoup
Re,
Effectivement, j'avais zappé le réinit, le plus propre (côté développeur) c'est
Err.Clear@+