Bonjour à tous,
Je suis Niveau 0- en VBA et si quelqu'un pouvait me tuyauter? Ca serait très sympa.
Voilà ce que j'essaye de faire:
Il m?intéresse de savoir si, dans la directory du fichier courant (directory faite de dossiers et de sous-dossiers dont le nombre est variable et n'importe pas), il y a tel ou tel répertoire de référence (RefDossier). Je voudrais récupérer le nom de ce répertoire de référence pour l'utiliser dans une macro.
Admettons qu'il y 4 RefDossier seulement (une directory ne contient que l'un ou l'autre de ces 4 répertoires)
Voilà la macro que j'ai conçue et qui ne fonctionne pas ! Erreur : pas de bloc If. Je dois commettre une faute très, très grossière. Voire plus!
Sub Essaidossier ()
'
Dim Chemin
Dim RefDossier(3) As String
RefDossier(0) = "Maison"
RefDossier(1) = "Jardin"
RefDossier(2) = "Rue"
RefDossier(3) = "Décoration"
Dim RepertRef As String
Chemin = ActiveDocument.Path
Dim i As Integer
For i 0 To i 3
If InStr(Chemin, RefDossier(i)) > 0 Then RepertRef = RefDossiers(i)
Else
Next i
End If
Exit For
MsgBox (RepertRef)
End Sub
Merci beaucoup pour votre réponse à cette question qui est la toute première peut-être d'une + ou - longue série. VBA, ce n'est pas facile!
Quand tu poste un code, pense à lire le point 2 de ma signature.
Sinon, ton code :
Dim i As Integer
For i 0 To i 3
If InStr(Chemin, RefDossier(i)) > 0 Then RepertRef = RefDossiers(i)
Else
Next i
End If
Exit For
Ton problème est un problème de syntaxe de base :
- On ne ferme les bloc que dans le même sens d'ouverture
- If (Condition) Then 'Tu as oublié le Then
- Le For, c'est For Variable=Source To Destination
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Bonjour,
1) Quelle est la nécessité de ce Else Exit For ? Il est même contreproductif !
2) je ne comprends d'ailleurs même pas la nécessité de passer par un tableau alors que la fonction Dir ferait seule merveille dans ce cas ! (ou alors quelque chose m'a échappé)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
L'utilisation
de Dir ne permet pas plus d'extraire l'un des noms de répertoires qui m'intéressent.
Effectivement,
Else
Exit For
aboutit à l'affichage d'une boîte de message vide.
J'ai supprimé ces 2 lignes et c'est parfait.
Le code est donc:
Sub Essaidossier ()
'
Dim Chemin
Dim RefDossier(3) As String
RefDossier(0) = "Maison"
RefDossier(1) = "Jardin"
RefDossier(2) = "Rue"
RefDossier(3) = "Décoration"
Dim RepertRef As String
Chemin = ActiveDocument.Path
Dim i As Integer
For i = 0 To 3
If InStr(Chemin, RefDossier(i)) > 0 Then
RepertRef = RefDossiers(i)
Exit For 'ici
End If
Next i