Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Débute en vba, exécuter mon code dans une cellule précise

telemarrk

XLDnaute Occasionnel
Bonjour,

Je me lance au VBA d'Excel, pour m'exercer j'utilise un code VBA trouvait sur le net qui me permet de lister le contenu d'un dossier.
Mais je n'arrive pas à l'appliquer en A3 il l'éxécute en A1.
J'ai essayé de mettre i = i + 3, il me place bien en A3 met il décale tous les 3 lignes

Code :

Dim Rep As String, Fichier As String
Dim i As Integer

Rep = "D:\chemin..."
Fichier = Dir(Rep)
Do While Fichier <> ""
i = i + 1
Sheets("Feuil1").Range("A" & i) = Fichier
Fichier = Dir
Loop

Je ne sais pas si je dois le mettre en WorkBook - Open ou dans un module. Le but étant que la macro s'éxécute au démarrage.

Merci pour votre aide.
 

fanch55

XLDnaute Barbatruc
Bonjour,
Do While Fichier <> ""
i = i + 1
i n'ayant pas été initialisé, il a la valeur 0 au début, donc i=i+1 --> 1 .
Si vous voulez débuter à la ligne 3 il faut donc dire que i=2 au début :
VB:
    i=2
    Do While Fichier <> ""
        i = i + 1

Ceci est le b-a-ba de la programmation .
Persévérez mais faites appel à votre logique ...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Telemarrk, Kiki, Fanch,
Comme Workbook_Open est une macro événementielle ( qui se déclenche sur un événement ) et qu'elle concerne le fichier complet, elle doit être mise dans ThisWorkbook.
( si la macro ne concernait qu'une feuille il faudrait la mettre dans la feuille )
Un ex en PJ avec :
VB:
Private Sub Workbook_Open()
    Dim Dossier As String, Fichier As String, i As Integer
    Range("A:A").ClearContents  ' Efface la colonne A
    Dossier = ThisWorkbook.Path & "\" ' Utilise le dossier en cours, à mettre à jour avec le dossier désiré : "D:\chemin..."
    i = 2
    Fichier = Dir(Dossier)
    Do While Fichier <> ""                          ' Tant qu'il existe un fichier
        i = i + 1
        Sheets("Feuil1").Range("A" & i) = Fichier   ' Inscrire fichier en colonne A, commence en A3
        Fichier = Dir                               ' Prochain fichier
    Loop
    Columns.AutoFit                                 ' Ajuste la largeur des colonnes
End Sub
 

Pièces jointes

  • Telemarrk.xlsm
    13.8 KB · Affichages: 2

telemarrk

XLDnaute Occasionnel
Merci Sylvanu pour le code que je vais certainement utiliser car il utilise le dossier en cours.

Par contre peut-on inclure dans la colonne B par exemple la date de dépôt du fichier dans le dossier.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Peut être avez une version VBA plus récente que la mienne et moins permissive. Je suis en 6.3.
Un autre essai en PJ avec :
VB:
On Error Resume Next
Sheets("Feuil1").Range("B" & i) = FileDateTime(Dossier & Fichier) ' Date de dernier enregistrement
Je précise le dossier concerné.
Le On error permet de dérouler la macro même s'il y a erreur. Si la colonne B est vierge, c'est que ça a raté.
 

Pièces jointes

  • Telemarrk.xlsm
    14.8 KB · Affichages: 1

telemarrk

XLDnaute Occasionnel
Ok, je peux t'embêter encore.

Je viens de tester ton fichier dans plusieurs de mes dossiers et dans l'un d'eux il ne me tri par dans l'ordre croissant mes fichiers alors que je les ai numérotés comme tu peux voir dans la capture ci-jointe.

Il commence par le N° 2
 

Pièces jointes

  • capture2.png
    18.5 KB · Affichages: 14

sylvanu

XLDnaute Barbatruc
Supporter XLD
???
Il ne range pas par ordre croissant, mais dans l'ordre où il les trouve dans le dossier.
A aucun moment vous avez demandé un rangement par ordre alpha !
Testez cette PJ, j'ai rajouté :
VB:
DL = Range("A65500").End(xlUp).Row
Range("A3:B" & DL).Resize(DL).Sort key1:=Range("A3"), order1:=xlAscending, Header:=xlYes
 

Pièces jointes

  • Telemarrk.xlsm
    15.5 KB · Affichages: 2

Discussions similaires

Réponses
7
Affichages
592
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…