Branchement selon conditions

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 !

aubelix

XLDnaute Impliqué
Bonsoir à tous les Amis du Forum. 🙂

Une nouvelle fois, je sollicite votre aide.

Pourriez-vous me corriger le code ci-dessous.
Je cherche un répertoire, si je le trouve, j'ouvre le fichier INDEX_NUM.xls.
Je recopie la valeur de la cellule A2 dans la feuille BASE dans le cellule A2
du classeur PROJET_V1.xls.

Si je ne letrouve pas, j'écris "1" dans la cellule A2 de la feuille BASE dans
du classeur PROJET_V1.xls.

Pourriez-vous m'aider.
Par avance Merci.
Cordialement.


Code:
[COLOR=green]  'chercher le fichier dans le dossier et ses sous-dossiers[/COLOR]
    pathClasseur = FindFile(pathDossier, nomClasseur)
    [COLOR=green]'si on n'a pas trouvé le fichier on se branche sur Ligne1[/COLOR]
    If pathClasseur = "" [COLOR=blue]Then[/COLOR] [COLOR=blue]GoTo[/COLOR] Ligne1 Else [COLOR=blue]GoTo[/COLOR] Ligne2
 
Ligne1:
Windows("PROJET_V1.xls").Activate
Sheets("BASE").Select
Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
Range("A2").Select
[COLOR=blue]GoTo[/COLOR] Ligne3
 
Ligne2:
[COLOR=green]'ouvrir le classeur en lecture seule[/COLOR]
Set classeur = Application.Workbooks.Open(pathClasseur, , True)
 
Windows("INDEX_NUM.xls").Activate
Sheets("INDEX_NUMERO").Select
 
Range("A2").Select
Selection.Copy
 
Windows("PROJET_V1.xls").Activate
Sheets("BASE").Select
Range("A2").Select
 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                                              :=False, Transpose:=[COLOR=blue]False[/COLOR]
[COLOR=darkgreen]'fermer le classeur[/COLOR]
Windows("INDEX_NUM.xls").Activate
Windows("INDEX_NUM.xls").Close False
 
[COLOR=blue]GoTo[/COLOR] Ligne3
 
Ligne3:
Unload USF_saisies
Usf_ImportSN.Show
[COLOR=blue]Exit Sub[/COLOR]
 
[COLOR=blue]End Sub[/COLOR]
 
Re : Branchement selon conditions

Re,
Je crois que tu n'as pas vu le pb en question
Dans ta macro (extrait)...
Code:
nomClasseur = "INDEX_NUM.xls"
pathDossier = "C:\REP1\REP2\REP3\REP4\"
pathClasseur = FindFile(pathDossier, nomClasseur)
et ta fonction...
Code:
If fichier.Name = nomFichier Then FindFile = fichier.Path: Exit Function
...ce qui veut dire qu'au premier fichier trouvé, on quitte la fonction qq soit le répertoire, il est donc normal que tu retournes souvent le même fichier, c'est ce que j'apelle un chmurx (et non un zdronkge !)
A+
kjin
 
Re : Branchement selon conditions

Re Kjin. 🙂

Merci pour ta réponse.

Je n'ai pas capté ce que tu m'avais répondu
Désolé 😕
Est-il possible de modifier la fonction pour obtenir la recherche
du répertoire de la valeur de la cellule en G2 ?

Merci pour ton aide.
Cordialement.
 
Re : Branchement selon conditions

Re,
Je ne vois pas où tu bloques...
Dans un premier temps, il faut tester si le dossier existe ou non...
Code:
If Dir(pathDossier & Range("G2"), vbDirectory) <> "" Then ...
...et le créer le cas échéant, ensuite tester si le classeur existe...
Code:
If Dir(pathDossier & Range("G2") & nomClasseur) <> "" Then ...
Et dans tous les cas ta fonction FindFile ne sert à rien !
A+
kjin
 
Re : Branchement selon conditions

Re Bonsoir.

Je t'avoue, que je suis perdu...

La création s'effectue bien en quittant.
Mais lorsque je recherche le INDEX_NUM.xls dans le S/répertoire de la valeur en G2
de la feuille "BASE" que ça coince:
1) S/répertoire trouvé > on ouvre INDEX_NUM.xls et copie la valeur de A2 dans "BASE en A2 + 1
2) Fichier non trouvé > on ne fait rien on sort de la macro ou on écrit "1" dans "BASE
(étant donné que je nettoie mon fichier en sortant)

Quelle solution STP ?
Peux-tu me corriger le code
Merci pour ton aide.
Cordialement.
 
Re : Branchement selon conditions

Bonsoir,
Je veux bien mais je n'y comprends rien !
A quoi sert quitter, lancer...où, quoi, comment ?
Quelle est exactement la marche à suivre ? a quoi sert le userform_quitter ?ne serait-ce pas plus simple de mettre un code qui sauvegarde à la fermeture ?...et j'en passe
Expliques clairement !
A+
kjin
 
Re : Branchement selon conditions

Bonsoir Kjin.

Désolé de te faire perdre ton temps...
Comme je te l'ai dis, c'est une transposition d'une application.
Cet userform, sert à sauvegarger dans REP1\........\REP4\valeur de la cellule "G2"
un fichier INDEX_NUM.xls qui sert à garder l'historique du dernier numéro utilisé.
C'est le bouton QUITTER après acceptation crée ce S/Répertoire et le fichier.
Il suffit d'entrer des valeurs dans B2,B3 etc... et le numéro s'incrémente.
Entrer un numéro dans G2, en quittant création du S/Rep et de l'historique du N°

Quant au bouton LANCER, normalement, il y'a pleins d'infos qui sont entrées
via un USF que j'ai supprimé pour alléger ce fichier ,dont le numéro de REF.
Il est possible que l'on entre le N° de REF plusieurs fois, aussi, il faut incrémenter le N° en A2.
D'où la recherche, s'il éxiste donc déjà utilisé on écris le numéro + 1 ou c'est la première fois
on écris 1

J'espère avoir expliqué mon problème.

Merci pour ton aide.
Cordialement.
 
Re : Branchement selon conditions

Bonjour Kjin.🙂

Merci pour l'intérêt que vous portez à mon problème et du temps passé à m'aider.
Quelques remarques pour faire avancer le projet:

1) La création du dossier de la valeur de la cellule "G2" sur la feuille "BASE" se fait bien.
C'est l'historique du dernier numéro utilisé du dossier ainsi crée.

Je pense que je me suis mal exprimé concernant le but de la macro "ExportIdNum"
On devrai l'appeler "ImporttIdNum" car elle doit pouvoir:

Lorsqu' on ouvre un dossier (voir 1) , vérification si le dossier éxiste, si il éxiste
- ouvrir le fichier "INDEX_NUM.xls" qui s'y trouve (Historique du dernier numéro utilisé pour ce dossier)
- copier la valeur de la cellule A2
- la coller dans la feuille "BASE" en A2 en ajoutant + 1 (ex: 10 trouvé, copier 10+1= 11

Si il n'éxiste pas, ne rien faire donc écrire 1 dans la feuille "BASE" en A2

J'espère avoir bien expliqué mon problème.

Merci pour ton aide.
Cordialement.
 
Re : Branchement selon conditions

Bonsoir,
Nouvelle mouture...
Ce que je n'ai toujours pas compris dans la macro CreerDossier
1 - si le dossier n'existe pas, on crée le dossier et on y ajoute un une copie de INDEX_NUM.xls
2 - si le dossier existe, le classeur INDEX_NUM sera forcément présent dans ce dossier (à moins que tu ne l'aies supprimer), et quoi fait-on dans ce cas ? faut-il écraser le fichier existant ou non ? dans cette version on ne fait rien donc à voir !
A+
kjin
 

Pièces jointes

Re : Branchement selon conditions

Bonjour Kjin. 🙂

Merci pour ta réponse.

Le dossier INDEX_NUM.xls est l'historique du dernier numéro utilisé pour chaque dossier crée.
Il faut le créer si inésistant et l'écraser systématiquement si il éxiste en quittant.
C'est le but de cette macro.

Donc au démarrage si l'on a le même numéro en G2 dans la feuille BASE, on va rechercher
si le dossier éxiste, si oui, on ouvre le fichier INDEX_NUM.xls et on lit la valeur en A2
que l'on copie sur la feuille BASE en cellule A2 en ajoutant +1
Si il n'éxiste pas, on écrit 1 sur la feuille BASE en cellule A2

Cela fontionne bien, hormis la correction pour l'écraser.
Je me sui permis de corriger ExporttIdNum par ImportIdNum

Merci pour ton aide.
Cordialement.
 
Re : Branchement selon conditions

Bonjour Kjin 🙂

Mille mercis pour tout le temps que tu as consacré à mon problème.
La macro fonctionne très bien.

Je te prie de m'excuser d'avoir été "brouillon" dans mes explications.

Une question :

J'ai masqué l'onglet INDEX_NUMERO (veryhidden) pour la rendre invisible.
Mais j'ai un message d'erreur lors de la sauvegarde à cette ligne:
La méthode copy de la classe Worksheet a échoué.

Code:
Sheets("INDEX_NUMERO").copy

Comment puis-je la rendre visible le temps de la copy et la masquer.

J'ai essayé

Code:
Sheets("INDEX_NUMERO").xlSheetVisible=true

mais ça ne fonctionne pas.

Merci pour ton aide.
Cordialement.




Cordialement.
 
Dernière édition:
- 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

Retour