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

  • Initiateur de la discussion Initiateur de la discussion telemarrk
  • 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 !

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.
 
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 ... 😉
 
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

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

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
    capture2.png
    18.5 KB · Affichages: 14
???
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

- 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

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
90
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
648
Réponses
32
Affichages
516
Réponses
3
Affichages
544
Réponses
2
Affichages
423
Réponses
12
Affichages
438
Retour