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

  • Initiateur de la discussion Initiateur de la discussion brice59
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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 ?
 
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
 
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
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
410
Réponses
2
Affichages
371
Réponses
3
Affichages
518
Réponses
2
Affichages
285
Retour