Ouverture et activation fichier Excel

Bonjour à tous,

A problème à priori simple, réponse à priori simple. Voici la situation :

J'ai 2 fichiers pour un code VBA. Le fichier principal (fichier_synthese) contient un formulaire et le code. Le formulaire contient une textbox pour effectuer une recherche d'un n° dans le deuxième fichier (fichier_origine) qui contient donc les données que je souhaite simplement copier sur le fichier_synthese. si le n° entré dans la textbox est trouvé dans le fichier_origine, le traitement peut se lancer (la traitement se trouvant dans le fichier_synthese).

Autrement dit je veux que le traitement du fichier_synthese aille chercher les informations dans le fichier_origine pour savoir s'il peut lancer ou non son code.

Mon problème est que je ne parviens pas à ouvrir le fichier_origine et en faire le fichier actif. Ce point est indispensable pour que la recherche via mon formulaire fonctionne puisque ma condition If va comparer la saisie dans la textbox avec les données dans le fichier_origine.

Voici un code similaire pour illustrer mes propos (il ne fonctionne pas, mais n'affiche aucun message d'erreur) :

Sub macrotest_copiercoller()

End Sub

J'espère que ma demande est claire, j'attends vos réponses avec impatience !

Merci d'avance,

Hanz2.0

Salut

supposons que tu es sur le premier fichier ouvert

je te conseil d'enregistré le nom de ce fichier dans une variable avant de faire autre chose (si celui doit changer un jour)

nom_fichier1 = ActiveWorkbook.Name

ou en dure

nom_fichier1 = "fichier_synthese.xlsm"

puis tu ouvre ton deuxième fichier par vba

et tu enregistre le nom du deuxième fichier dans une autre variable

nom_fichier2 = ActiveWorkbook.Name 

ou l'inscrire directement en dure au choix

nom_fichier2 = "fichier_origine.xlsm"

et tu passer de l'un a l'autre en utilisant : (mais faut etre sur qu'il soient tous les deux ouverts)

  Windows(nom_fichier1).Activate

ou

   Windows(nom_fichier2).Activate

fred

Salut,

Merci pour ta réponse. Le souci c'est que la personne qui utilisera le fichier de synthèse n'a pas nécessairement accès à l'autre fichier (source des données), auquel cas il ne pourra pas l'ouvrir et donc ta solution ne fonctionnera pas (si je ne dis pas de bêtises) ?

Hanz2.0

Bonjour

J'ai répondu a ta question initiale a savoir :

Mon problème est que je ne parviens pas à ouvrir le fichier_origine et en faire le fichier actif

avec ce que je t'ais indiquer tu peux passer d'un classeur a l'autre.

et tu avais dis :

J'ai 2 fichiers pour un code VBA

maintenant il peut y en avoir plus qu'un

je ne peux pas tout savoir si tu n'explique pas tout .....

fred

Fred,

Je ne crois pas t'avoir fait un quelconque reproche, il me semble même t'avoir remercié. Je te remercie à nouveau pour ton aide.

Je reformule un peu ma demande :

Supposons que la personne ait accès aux deux fichiers, comment faire pour lui éviter d'ouvrir les deux fichiers et qu'elle puisse se servir uniquement du fichier_synthese ?

Merci d'avance,

Hanz2.0

Salut

désolé mais il faut plus de précisions encore

les deux fichiers on des noms fixes qui ne changeront jamais ?

sont-ils dans le même répertoire (si le deuxième existe évidemment)

pourquoi avoir deux fichiers prenant en charge les macros (*.xlsm) alors que dans ton texte tu parlais de 2 fichiers pour 1 code VBA pourquoi ton deuxième fichier n'est pas tout simplement un fichier excel basique (*.xlsx)

toujours est-il que des fichiers test étaient souhaitable

voici un morceau de code qui suppose que le nom du fichier origine ne changera jamais et que les deux fichiers doivent se trouvé dans le meme repertoire

Option Explicit
Sub copie()
Dim fichier_synthese, fichier_origine As String
fichier_synthese = ActiveWorkbook.Name
fichier_origine = "fichier_origine.xlsm"

If test_existance_fichier(ActiveWorkbook.Path & "\" & fichier_origine) <> "" Then
Workbooks.Open (ActiveWorkbook.Path & "\" & fichier_origine)
'si le fichier est present faire les copies necessaires
'et utilisé les
' Windows(fichier_synthese).Activate ou
' Windows(fichier_origine).Activate
'pour passer d'un fichier a un autre ou utiliser :
'si c 'est le fichier origine qui est actif
'Workbooks(fichier_synthese).Sheets("suivi").Range("B4")= Sheets("toto").Range("B4").Value
'avec le nom des feuilles et des plages de cellules a copié a adapter en conséquence
Else
'sinon le fichier origine n'existe pas
'peut etre faire autre chose si il n'est pas présent ou
'rien du tout
End If
End Sub

Function test_existance_fichier(fichier As String) As String
On Error Resume Next
'renvoi le nom du fichier si il existe sinon ""
test_existance_fichier = Dir(fichier)
End Function

Fred

Fred,

Merci à toi. Pour répondre à tes questions ;

  • Les deux fichiers ne changeront pas de noms. Ils se trouveront sur le même serveur, pas nécessairement sous le même répertoire.
  • Le 2ème fichier (fichier_origine) n'a absolument aucune raison d'être en xlsm (je pensais que le fait qu'il soit en xlsx était un facteur du dysfonctionnement de la macro mais apparemment non).

Si tu as d'autres questions n'hésite surtout pas.

J'essaye de suite ton code même si il y a des choses qui m'échappent pour le moment.

Au plaisir de te relire,

Hanz2.0

Si les deux fichiers ne sont pas dans le meme repertoire il faut demandé a l'utilisateur d'indiquer ou se trouve ce fichier sauf si tu connais d'avance l'emplacement du fichier

donc au choix

soit tu marques : (par exemple a adapter en fonction de)

fichier_origine = "C:\Users\st_chal\Desktop\TEST MACRO\fichier_origine.xlsx"
If test_existance_fichier(fichier_origine) <> "" Then

soit tu demande l'utilisateur de dire ou se trouve le fichier origine :

fichier_origine = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , "OU SE TROUVE LE FICHIER ORIGINE.XLSX ?")
'demande a l'utilisateur de choisir un fichier dont l'extension est xlsx
If fichier_origine <> "faux" Then 'appuyer sur annuler de la boite de dialogue
    If test_existance_fichier(fichier_origine) <> "" Then 'le fichier existe bien

fred

Fred,

Merci pour toutes ces précisions. Il reste une chose que je ne comprends pas : a quoi sert le test d'existence ? Si on considère que les fichiers se trouvent tous sous le même répertoire et qu'ils ne bougeront pas (possibilité de les vérouiller par exemple), le test reste t'il utile ? (Tu remarqueras que j'essaye de l'éviter puisque je ne le comprends absolument pas ^^)

Au plaisir de te relire,

Hanz

le test d'exitence sert a répondre a ce que tu avais ecrit :

Le souci c'est que la personne qui utilisera le fichier de synthèse n'a pas nécessairement accès à l'autre fichier (source des données), auquel cas il ne pourra pas l'ouvrir et donc ta solution ne fonctionnera pas (si je ne dis pas de bêtises) ?

donc si le fichier n'est pas présent il faut pas que ta macro plante tout simplement. si tu essaye d'ouvrir un fichier qui n'existe pas => plantage

fred

Fred,

Ok donc supposons que le fichier est bien présent sur le répertoire auquel tout le monde a accès.

Voici où en est mon code.

Private Sub Commande_Rechercher_Click()

End Sub

Le seul traitement que je demande pour le moment est de copier la case sous le fichier d'origine et coller sur le fichier de synthèse. or le programme ne fonctionne pas et ne copie rien du tout. Qui plus est, les MsgBox ne fonctionnent pas non plus... Je ne vois pas ce qui coince.

Merci d'avance,

Hanz2.0

Bonsoir

plusieurs choses je ne pourrais t aider que si j ai des fichiers de travail... et si ma femme veux bien car je suisi en vacances...

sinon rapidement je vois deux erreurs

Tu essaye d'ouvrir par code un fichier xlsm cela veut donc dire que tu es sur le fichier xlsx ce qui est impossible... seul les fichiers xlsm peuvent avoir des macros en execution.

De plus pour ouvrir un fichier il faut a un moment ou a un autre lui donner le chemin d acces comolet au fichier. D ou dans mes precedents posts :

fichier_origine = "C:\Users\st_chal\Desktop\TEST MACRO\fichier_origine.xlsx

je te conseil d executer ton code pas a pas en appuyant sur F8 de vbaproject et de voir l etat de differentes variables instruction apres instruction

fred

Merci pour ton aide, profite bien de tes vacances surtout !

Je laisse ouvert le topic encore un moment, si jamais quelqu'un d'autre voyait une erreur dans le code.

Hanz2.0

Rechercher des sujets similaires à "ouverture activation fichier"