begin process at 2012 02 14 03:26:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

mise à jour classeur depuis un classeur fermé


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

mise à jour classeur depuis un classeur fermé

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ée 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 Mail automatique dans classeur excel fermé [ par Yrem ] Bonjour A partir d'un fichier excel fermé je veux envoyer des mails via lotus notes à differentes personnes. Les dates d'envoi sont dans des cellules [déplacé VB6 -> VBA] Macro de mise à jour d'un classeur [ par scriboull ] bonjour, j'ai un classeur de base, je reçois des données non triées et j'aimerai créer une macro afin de mettre à jour mon classeur : voici mon class


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales