[..] problème de boucle avec condition ( loop et if)

brice59

XLDnaute Occasionnel
Bonjour,

Je galère un peu.

j'ai trouvé beaucoup d'info pour l'instant, mais maintenant je sèche.

Ce que je veux faire
1 ouvrir le fichier
2 copier le contenu dans le fichier principale
3 sauvegarder le fichier source dans un autre dossier
4 supprimer le fichier source.

et ce jusqu'à ce qu'il n'y ait plus de fichier.


donc voici mon code.
il plante lorsque le dossier est vide

Code:
Sub pros()



'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

                            'SUIVI PROS
                            
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX





'déclaration des variables  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  
    'lien "modulation pros"
        bddpros = "chemin\"


    Dim Ligne As Integer
    'Définition de la variable, ici, dernière ligne de la colonne A
    Ligne = Range("B65536").End(xlUp).Row
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


 
'XXXXXXXXXXXXXXXXXXXX M XXXXXXXXXXXXXX




'ouverture du fichier si existant

If Dir("chemin\fichier*.csv") <> "" Then
      nomFic = "chemin\fichier*.csv"
         If nomFic <> False Then
         
Dim Fich As String
    Fich = Dir("chemin\fichier*.csv")
    Do While nomFic <> ""
        Workbooks.OpenText Filename:="chemin\fichier*.csv", DataType:=1, Semicolon:=True, local:=True
      Fich = Dir

'récupérer la date du fichier
    txt = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
    période = Right(txt, Len(txt) - 22)
    save = bdd & période
    nomFic = save & ".xls"
    ficor = ActiveWorkbook.Name
    Ligne = Range("B65536").End(xlUp).Row
    
'ajout d'une colonne
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove


'nommer colonne A
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "période"

'nommer les lignes de la colonne A jusqu'à la dernière ligne
    Range("A2:A" & Ligne).Value = DateSerial(Left$(période, 4), Right$(période, 2), 1)

'mise en forme de la colonne A
    Range("A2:A" & Ligne).NumberFormat = "[$-40C]mmmm-yyyy;@"

'renommer la feuille
    ActiveSheet.Name = période

'enregistrer sous
Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=bddpros & save, FileFormat:=xlExcel8, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        Application.DisplayAlerts = True
        
'copier/coller dans tableau de bord
    Sheets(période).Select
    Range("A2:Z2063").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("tableau de bord.xls").Activate
    Sheets("BDDPROS").Select
    Range("A65536").End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste
        
 'fermeture du fichier d'origine
        Application.DisplayAlerts = False
        Windows(nomFic).Close
        Application.DisplayAlerts = True
        

'suppression des fichiers si existant
        If Dir("chemin\fichier*" & période & "*") <> "" Then
    nomFic = "chemin\fichier*" & période & "*"

         If nomFic <> False Then
       
Dim Fic As String
    Fic = Dir("chemin\fichier*" & période & "*")
    Do While Fic <> ""
        Kill "chemin\fichier*" & période & "*"
        Fic = Dir
    Loop
    End If
    End If
     Loop
    End If
  
 End If
     End Sub
 
Dernière édition:

brice59

XLDnaute Occasionnel
Re : [..] problème de boucle avec condition ( loop et if)

je ne pense pas que ce soit ça

la boucle ouvrir le fichier qui a la même racine (d'ou le fichier*) fonctionne correctement.
il ouvrir bien les fichiers un par un jusqu'à ce qu'il n'y en ait plus, puis il passe à la suite

ça a planté lorsque j'ai ajouté le boucle "supprime le fichier qui était ouvrir" puis recommence.
je pense que j'ai du mal placer le "do while" ou que j'ai une variable utilisée pour 2 choses différentes, mais je ne sais pas quoi.

tu vois ce que je veux dire ?
 

Pierrot93

XLDnaute Barbatruc
Re : [..] problème de boucle avec condition ( loop et if)

Re,

un code comme ceci fonctionne chez moi...
Code:
Dim chemin As String, f As String
chemin = "C:\MesDocs\rep1\Test"
f = Dir(chemin & "\classeur*.xls")
Do While f <> ""
    MsgBox f
    f = Dir
Loop
 

Pierrot93

XLDnaute Barbatruc
Re : [..] problème de boucle avec condition ( loop et if)

Re,

une boucle comme celle-ci devrait suffire :
Code:
Dim chemin As String, f As String, wb As Workbook
chemin = "C:\MesDocs\rep1\Test\"
f = Dir(chemin & "fichier*.csv")
Do While f <> ""
    Workbooks.OpenText (chemin & f)
    Set wb = ActiveWorkbook
    'tes actions
    wb.Close False
    Kill chemin & f
    f = Dir
Loop

bonne soirée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 503
Membres
103 236
dernier inscrit
Menni