Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : mise à jour classeur depuis un classeur fermé [ Langages dérivés / VBA ] (jerjou)

mardi 13 mars 2007 à 18:45:51 | mise à jour classeur depuis un classeur fermé

jerjou

Salut à tous,

J'ai 2 classeurs xls:
A = classeur source fermé.
B = classeur ouvert.

J'ai déjà un bout de code qui fonctionne pour importé des données dans le classeur B sans ouvrir le classeur A. Voir code ci-dessous
***********************************
Sub test()
GetValuesFromAClosedWorkbook "C:\", "classeurA.xls", "Clients", "A1:H30"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "\[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
***********************************

1- Peut-on importer les données uniquement à la première ouverture du jour du classeur? Celui-ci étant en accès partagé je ne veux pas qu'il soit mis à jour à chaque ouverture. (trop lourd et long)
2- Depuis le classeur B ouvert je voudrais importer les commentaires des cellules du classeur A qui est fermé et que je ne veux pas ouvrir. Une solution SVP?

Merci d'avance pour votre aide.
Jerjou


mercredi 14 mars 2007 à 08:05:13 | Re : mise à jour classeur depuis un classeur fermé

MrOsmose

Je ne sais pas si il y a moyen directement de tester le fait que le fichier ai déja été ouvert ce jour... par contre tu peux passer par une feuille "cachée" qui contiendrait tes données :

A chaque ouverture du fichier, tu éxecute une macro qui se présenterait comme :

'1 je choisis et retire le tag "caché" de la feuille cachée
Sheets('FeuilleCachée').Select
SelectedSheet.Hidden= false
'2 si la date enregistrée n'est pas celle du jour
if cells(1,1) <> DateTime.Date()
    '3 execution de la macro complète
    'ici, ton code... ...

    '4 j'enregistre la date d'aujourd'hui
    Sheets('FeuilleCachée').Select
    Cells(1,1).Select
    SelectedCells.Value = DateTime.Date()
end if
'5 je recache ma feuille.
SelectedSheet.Hidden = true 

PS : Ceci est un code "de principe" je ne suis plus sûr des noms exacts des fonctions... il me semble que c'est ca, et ca devrait t'aider a mettre en oeuvre la solution avec un ptit peu de recherche ;)

en esperant que ca t'aide a faire ce que tu désire ( --> réponse acceptée? )

mercredi 14 mars 2007 à 15:37:10 | Re : mise à jour classeur depuis un classeur fermé

jerjou

Bjr MrOsmose,

Tout d'abord merci de l'interet porté à ma requete.

Je ne suis pas certains que ton code réponde à ma demande, peut-être me suis-je mal exprimé:

J'ai un classeur sur un serveur qui est consultable par l'ensemble de mes collaborateurs. Je souhaite qu'une macro soit effectuée uniquement à la première ouverture du classeur chaque jour (ou encore mieux, une fois par jour à une heure donnée sans que le classeur ne soit ouvert!). Si le classeur est ouvert plusieurs fois la même journée je ne veux pas que la macro soit effectuée à chaque ouverture (trop lourd). J'espère avoir été plus clair.
As-tu une idée pour l'autre point de ma demande: 2- Depuis le classeur B ouvert je voudrais importer les commentaires des cellules du classeur A qui est fermé et que je ne veux pas ouvrir. Une solution SVP?

Merci encore,
Jerjou

mercredi 14 mars 2007 à 17:45:40 | Re : mise à jour classeur depuis un classeur fermé

MrOsmose

Si tu veux faire une MAJ d'un classeur excel sans rien ouvrir, je te conseille de passer par une solution de programmation externe (VStudio 2005 express? avec .net, tu peux accéder a un tableau excel comme si c'etait une source SQL)

Sinon, le code que je te propose serait a executer a chaque ouverture, oui, MAIS :
 - si le classeur n'a pas encore été ouvert, il executera la totalité
 - si le classeur a déja été ouvert, il n'aura executé que 3 actions :
                afficher la page "Feuille cachée", tester la valeur de la date, cacher la "Feuille cachée"
       Ce qui est minime en terme d'execution.

Si tu ne veux vraiment executer qu'une mise a jour (ou une modification quelconque) qu'une seule fois par jour, je te conseillerai en effet plutot la premiere solution (Visual Studio 2005 Express, qui a l'avantage d'etre gratuit)


Pour ta seconde question, je ne sais pas si il est possible d'effectuer des imports depuis un fichier non ouvert, et sans l'ouvrir dans la macro... je ne pense pas qu'on puisse faire une extraction de donnée directement depuis un fichier fermé

mercredi 14 mars 2007 à 18:04:21 | Re : mise à jour classeur depuis un classeur fermé

jerjou

Merci,
Je vais essayer ton code pour voir ce que ça donne.
Pour la seconde question, le code suivant permet de récuperer des données (valeur des cellules) dans un classeur fermé (j'ai testé ça fonctionne), mais je bute pour récuperer aussi les commentaires.

Sub test()
GetValuesFromAClosedWorkbook "C:\", "classeurA.xls", "Clients", "A1:H30"
End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "\[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub

Merci et @ bientôt




Cette discussion est classé dans : string, jour, classeur, fermé, cellrange


Répondre à ce message

Sujets en rapport avec ce message

Problèmes macros vba [ par Aldigo ] Bonjour,J'ai trois questions ( problèmes surtout! ) :- à partir d'un classeur ouvert comment puis-je y importer le contenu d'une colonne d'un classeur Suppression Alerte Mise à Jour des Liaisons [ par homere47 ] Dur Dur D'être programmeur en VBARe-probléme  Dans un classeur Excel j'ai des liaisons avec d'autres classeurs (pour mise à jour de formules)Comment s Message de liasons entre classeur a l'ouverture d'un classeur [ par olivier857 ] Slt,j'ai fait une macro qui permet d'ouvrir un classeur excell et je voudrai savoir si il est possible d'y ajouter du code qui permettrai d'eviter un référence à classeur excel fermé en vba [ par rosenfel ] Bonjour, je sais comment faire référence sous excel à un classeur fermé. Néanmoins, en VBA, je n'arrive pas à accéder à des valeurs de classeurs fermé reupération données dans classeur fermer [ par souk69 ] Bonjour, j'ai un ti probleme qui est le suivant...Alors je sohaite recuperer des données dans un classeur fermé et j'ai taper le code ci dessous, le p Acceder à un champ recordset paramétré [ par jyvaut75 ] Bonjour,Dans une appli en cours de développement, je créé une table dont les noms de champ peuvent varier. J'explique déjà cette partie: je rentre une Mise à jour (module) de Macro [ par xyzers ] Bonjour à tous,Actuellement je mets régulièrement à jour une macro (amélioration, debug, ajout de fonctionnalité).Le problème est que je dois la copie mise à jour d'un classeur [ par epaminondas ] Bonjour, Je suis sur un proje Problèmes VBA [ par Aldigo ] Bonjour,Je réitère mon appel,J'ai trois questions ( problèmes surtout! ) :- Quelles sont les lignes de prog à écrire pour qu'à partir d'un classeur ou Trouver le jour de la semaine a partir d'une date [ par lezardjet ] BonjourJe travaille sous access 2000 et je cherche un peu de code en VB ou même directement une fonction qui pourrai renvoyer pour une date donnée le


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.