Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2011, 23h45   #1
Invité régulier
 
Homme John Matches
Inscription : août 2010
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme John Matches
Localisation : Belgique

Informations professionnelles :
Secteur : Associations - ONG

Informations forums :
Inscription : août 2010
Messages : 32
Points : 5
Points : 5
Par défaut VBA - Excel - Chaine de caractères

Bonjour,

Je bloque sur ceci :
J'ai un fichier qui s'appelle devis.xlsm Quand le devis est rempli et que mon client veut sauvegarder le fichier, la macro crée un répertoire (en fonction de la valeur d'une cellule : par exemple : Dupont - Colfontaine) et enregistre le fichier sous un autre nom (en fonction d'autres champs du fichier par exemple : Dupont - Colfontaine - FRBA 20111121-2.xlsm). Jusque là ... pas de soucis.

Mais je n'arrive pas à tester si, lors de l'enregistrement, le fichier est déjà dans le répertoire 'Dupont - Colfontaine' ou si le fichier est encore dans le répertoire d'origine (qui peut être différent en fonction de la personne qui utilise le fichier).
Je pense donc qu'il serait utile de vérifier dans le chemin du classeur (ActiveWorkbook.path) si le nom du répertoire (Dupont - Colfontaine) se trouve bien dedans. Comment faire ?

Merci d'avance.
Prof_Matches est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 22/11/2011, 07h10   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Si le fichier se trouve dans le répertoire "final" la fin de ActiveWorkbook.path correspond à

Code :
1
2
3
Dim StrPartielPath as string
 
StrPartielPath = CelluleDupont & "\" & CelluleColfontaine  & "\" & CellueNomFichier
Ensuite on regarde si cela correspond bien à la chaîne path en contrôlant le x derniers caractère. X correspondant au nombre de caractère dans la chaîne ou se trouve la texte a rechercher.

Code :
1
2
3
4
5
6
7
if right(ActiveWorkbook.path,len(StrPartielPath)) = StrPartielPath then
  'On se trouve bien dans le répertoire final
 
Else
  'On est pas dans le répertoire final
 
End if
Il serait également possible d'utiliser InStr, mais attention, la chaîne recherchée peut se trouver n'importe ou dans path, ce qui peut poser problème si par exemple on rechercher le nom des répertoires sans le nom fichier ou sans l’extension du fichier. Ce qui n'est pas le cas ici.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 09h01   #3
Invité régulier
 
Homme John Matches
Inscription : août 2010
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme John Matches
Localisation : Belgique

Informations professionnelles :
Secteur : Associations - ONG

Informations forums :
Inscription : août 2010
Messages : 32
Points : 5
Points : 5
Merci pour la réponse.
C'est une bonne idée de travailler sur la longueur du champ. Je retiens pour la prochaine fois.

Entre temps j'avais trouvé cette solution :

Code :
If ActiveWorkbook.Path Like "*" & nom_repertoire_client & "*" Then MsgBox "C'est dans le bon répertoire !."
Bon ou pas bon ?
Prof_Matches est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 09h24   #4
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 709
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 709
Points : 3 636
Points : 3 636
Salut, te renseigner sur FSO et FileExists ou plus simple

Code :
1
2
3
Function ExistenceFichier(sFichier As String) As Boolean
    ExistenceFichier = Dir$(sFichier) <> ""
End Function
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 17h46   #5
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Citation:
Envoyé par kiki29 Voir le message
Salut, te renseigner sur FSO et FileExists ou plus simple
Salut

La demande initiale n'est pas de savoir si le fichier existe déjà mais de savoir où le fichier sur lequel il travaille est enregistré.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h04.


 
 
 
 
Partenaires

Hébergement Web