1 macro sur Excel 1997
Résolu/Fermé
A voir également:
- 1 macro sur Excel 1997
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Calculer une moyenne sur excel - Guide
- Comment aller à la ligne sur excel - Guide
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 nov. 2008 à 13:02
30 nov. 2008 à 13:02
bonjour,
Ci joint maquette:
https://www.cjoint.com/?lEm5oBMES7
les macros seront à incorporer dans les 20 classeurs
n'hésites pas pour explications supp.
Ci joint maquette:
https://www.cjoint.com/?lEm5oBMES7
les macros seront à incorporer dans les 20 classeurs
n'hésites pas pour explications supp.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 nov. 2008 à 16:30
30 nov. 2008 à 16:30
re,
Tu as 2 macros à insérer dans les classeurs sources:
1/ la macro "Workbook before close"
que tu peux trouver en faisant un clic droit sur l'onglet et que tu copies colles dans tes autres classeurs source dans le moduke "thisworkbook"
2/ la macro "cafter"
que tu trouves dans module1
Pour créer un module, dans VBE (alt+F11 pour accèder à VBE) menu insertion -module
l'astuce est de copier ces 2 macros sur une feuille Word et de coller classeur source par classeur source
n'oublie pas de mettre les classeurs en macro-sécurité moyenne ou basse
Tu peux faire un essai maintenant avec ce que je t'ai transmis "pour piger"; l'inscription dans ton classeur "mise_a_jour_etc" est automatique dès que tu fermes un classeur source ("before close")
Tu as 2 macros à insérer dans les classeurs sources:
1/ la macro "Workbook before close"
que tu peux trouver en faisant un clic droit sur l'onglet et que tu copies colles dans tes autres classeurs source dans le moduke "thisworkbook"
2/ la macro "cafter"
que tu trouves dans module1
Pour créer un module, dans VBE (alt+F11 pour accèder à VBE) menu insertion -module
l'astuce est de copier ces 2 macros sur une feuille Word et de coller classeur source par classeur source
n'oublie pas de mettre les classeurs en macro-sécurité moyenne ou basse
Tu peux faire un essai maintenant avec ce que je t'ai transmis "pour piger"; l'inscription dans ton classeur "mise_a_jour_etc" est automatique dès que tu fermes un classeur source ("before close")
Bonsoir Michel,
Je récapépette:
1° Je place la macro "Cafter":
Private Sub Workbook_BeforeClose(Cancel As Boolean)
source = ThisWorkbook.Name
Cafter
End Sub
dans tous mes classeurs ( les 20) à l'intérieur du répertoire "ThisWorkbook" de VBA.
2° Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
Const classeur As String = "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
Const chemin As String = "D:\documents\" ' a adapter à l'emplacement de "classeur"
Public source As String
Sub cafter()
Dim conn As Object
Dim rqt As Object
Dim moment As Date
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & chemin & classeur & ";Extended Properties=""Excel 8.0;"""
moment = Now()
source = Left(source, Len(source) - 4)
' travail demandé: insère dans les champs de "db_taupe" (cellules nommées) le nom du classeur et le moment
texte_SQL = "INSERT INTO db_taupe (nom_classeur,date_utilisation) VALUES ('" & (source) & "','" & (moment) & "' )"
' éxécute le travail demandé
Set rqt = CreateObject("ADODB.Recordset")
Set rqt = conn.Execute(texte_SQL)
rqt.Close
Set rqt = Nothing
conn.Close
Set conn = Nothing
End Sub
3° Peux-tu m'expliquer dans quel classeur je mets "Insertion Nom définir" et les plages?
Désolé
Merci beaucoup
@+
Je récapépette:
1° Je place la macro "Cafter":
Private Sub Workbook_BeforeClose(Cancel As Boolean)
source = ThisWorkbook.Name
Cafter
End Sub
dans tous mes classeurs ( les 20) à l'intérieur du répertoire "ThisWorkbook" de VBA.
2° Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
Const classeur As String = "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
Const chemin As String = "D:\documents\" ' a adapter à l'emplacement de "classeur"
Public source As String
Sub cafter()
Dim conn As Object
Dim rqt As Object
Dim moment As Date
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & chemin & classeur & ";Extended Properties=""Excel 8.0;"""
moment = Now()
source = Left(source, Len(source) - 4)
' travail demandé: insère dans les champs de "db_taupe" (cellules nommées) le nom du classeur et le moment
texte_SQL = "INSERT INTO db_taupe (nom_classeur,date_utilisation) VALUES ('" & (source) & "','" & (moment) & "' )"
' éxécute le travail demandé
Set rqt = CreateObject("ADODB.Recordset")
Set rqt = conn.Execute(texte_SQL)
rqt.Close
Set rqt = Nothing
conn.Close
Set conn = Nothing
End Sub
3° Peux-tu m'expliquer dans quel classeur je mets "Insertion Nom définir" et les plages?
Désolé
Merci beaucoup
@+
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
30 nov. 2008 à 19:06
30 nov. 2008 à 19:06
re,
dans le classeur "mise à jour" d'ailleurs, tu trouves cà dans la feuil1 où je t'ai expliqué... hé,oui!
Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
NON
C'est dans chaque classeur source comme ce que je t'ai transmis
dans le classeur "mise à jour" d'ailleurs, tu trouves cà dans la feuil1 où je t'ai expliqué... hé,oui!
Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
NON
C'est dans chaque classeur source comme ce que je t'ai transmis
30 nov. 2008 à 15:28
Je vais essayer de mettre tout ça en place demain au boulot et je te tiendrai au courant.
Si j'ai bien compris, j'insère dans un module VBA pour chaque classeur le code que tu m'as envoyé.
La macro va t'elle se lancer toute seule ou il faut que je crée un bouton et que je l'exécute?
Merci bcp.
@+
1 déc. 2008 à 18:52
J'ai bien respecté les consignes que tu m'as données et j'ai eu 3 messages d'erreurs en voulant exécuter la macro.
Je t'ai fait des impressions écran que j'ai collées sur la Feuil2 pour que tu jettes un oeil et me conseiller.
Désolé pour le dérangement.
http://www.cijoint.fr/cjlink.php?file=cj200812/cij2uy0Ps8.xls
Merci Bcp.
1 déc. 2008 à 19:13
Mais non, tu n'as pas DU TOUT lu et suivi ce que je t'avais marqué
1/ ce n'est une image dans la PJ mais le classeur "mise_a_jour" !!!
2/ Je t'ai écrit ceci hier post n° 5 ET EN GRAS
Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
NON
C'est dans chaque classeur source comme ce que je t'ai transmis
ET je vois dans le classeur mise à jour cette macro, en plus dans le module feuil1 voir post3:
2/ la macro "cafter"
que tu trouves dans module1
dans class_1.xls il ya les macros à leur place où elles devront être dans les 20 Classeurs source: tu copies donc ces macros à partir des macros et non à partir des zones de texte
désespérant...
J"abandonne
Ciao
2 déc. 2008 à 21:30
Avant tout mille excuses pour hier !
J’ai vu que tu étais découragé (pour ne pas employer une autre expression) quand tu as vu que je n’avais rien compris au travail que tu m’as envoyé.
Je tiens à te rassurer, tout s’est bien passé aujourd’hui et je suis content d’y être parvenu.
C’est certainement grâce au coup de pied dans le… que tu m’as donné hier. - )))))))))
J’ai pu mettre en place les fichiers et l’enregistrement des mises à jour se fait très bien.
Par contre, je voudrais te demander une faveur pour que la macro réponde bien à mes besoins.
Je me suis rendu compte qu’elle me renseignait le fichier « Mise _à_jour_TBD_CDC.xls » même quand on consultait un fichier sans y avoir fait d’enregistrement.
Or ce que je voudrais savoir, c’est quand les fichiers ont été modifiés puis enregistrés.
Est-il possible de dissocier les 2 ?
C’est ma dernière requête.
Salutations très cordiale.
Dan