voilà , dans chacun de mes classeurs disposé sur un reseau j'ai mis dan s le wkbook open l'appel de la macro complementaire
les fichiers ont tous le meme nom et la surveillance de la cellule B2 se fa it sur la meme feuille de chaque fichier
en fait, j'ai remarqué que si l'on enregistre le classeur sans pour autan t avoir rien modifié, la mise à jour de la date se fait
donc l'objet de ma quest ion etait
si on modifie la cellule B2 de chaque classeur contennat dans le WKBook ope n l'appel de la complemetnaire, alors on inscrit la date de modification si non on laisse celle deja inscrite
merci de ton aide
Le samedi 3 août 2013 01:24:52 UTC+2, MichD a écrit :
Ta question n'est pas claire!
Si je comprends ta question, tu veux vérifier le
contenu de la cellule B2 d'un autre classeur que celui
où tu as défini la procédure "Workbook_Open".
Ce classeur2, est-il toujours le même? Porte-t-il un nom
précis? Le nombre de classeurs ouverts dans ton application
est-il toujours le même?
Je t'ai donné un fichier de macros complémentaires... si tu utilises
l'événement "workbook_Open" dans le thisWorkbook, tu vas toujours
être à la merci de l'usager s'il accepte ou non les macros dès l'ou verture.
Tu dois préciser davantage ce que tu désires effectuer.
voilà , dans chacun de mes classeurs disposé sur un reseau j'ai mis dan s le wkbook open l'appel de la macro complementaire
les fichiers ont tous le meme nom et la surveillance de la cellule B2 se fa it sur la meme feuille de chaque fichier
en fait, j'ai remarqué que si l'on enregistre le classeur sans pour autan t avoir rien modifié, la mise à jour de la date se fait
donc l'objet de ma quest ion etait
si on modifie la cellule B2 de chaque classeur contennat dans le WKBook ope n l'appel de la complemetnaire, alors on inscrit la date de modification si non on laisse celle deja inscrite
merci de ton aide
Le samedi 3 août 2013 01:24:52 UTC+2, MichD a écrit :
Ta question n'est pas claire!
Si je comprends ta question, tu veux vérifier le
contenu de la cellule B2 d'un autre classeur que celui
où tu as défini la procédure "Workbook_Open".
Ce classeur2, est-il toujours le même? Porte-t-il un nom
précis? Le nombre de classeurs ouverts dans ton application
est-il toujours le même?
Je t'ai donné un fichier de macros complémentaires... si tu utilises
l'événement "workbook_Open" dans le thisWorkbook, tu vas toujours
être à la merci de l'usager s'il accepte ou non les macros dès l'ou verture.
Tu dois préciser davantage ce que tu désires effectuer.
voilà , dans chacun de mes classeurs disposé sur un reseau j'ai mis dan s le wkbook open l'appel de la macro complementaire
les fichiers ont tous le meme nom et la surveillance de la cellule B2 se fa it sur la meme feuille de chaque fichier
en fait, j'ai remarqué que si l'on enregistre le classeur sans pour autan t avoir rien modifié, la mise à jour de la date se fait
donc l'objet de ma quest ion etait
si on modifie la cellule B2 de chaque classeur contennat dans le WKBook ope n l'appel de la complemetnaire, alors on inscrit la date de modification si non on laisse celle deja inscrite
merci de ton aide
Le samedi 3 août 2013 01:24:52 UTC+2, MichD a écrit :
Ta question n'est pas claire!
Si je comprends ta question, tu veux vérifier le
contenu de la cellule B2 d'un autre classeur que celui
où tu as défini la procédure "Workbook_Open".
Ce classeur2, est-il toujours le même? Porte-t-il un nom
précis? Le nombre de classeurs ouverts dans ton application
est-il toujours le même?
Je t'ai donné un fichier de macros complémentaires... si tu utilises
l'événement "workbook_Open" dans le thisWorkbook, tu vas toujours
être à la merci de l'usager s'il accepte ou non les macros dès l'ou verture.
Tu dois préciser davantage ce que tu désires effectuer.
Essaie ceci, j'ai modifié le fichier de la macro complémentaire
http://cjoint.com/?CHfoBxqclRn
La procédure dans ce fichier utilise le nom de la propriété "Name" de l'objet "Feuille" dans le classeur. Dans l'arborescence des objets du projetVBA du fichier, la liste des feuilles s'affiche de cette façon :
Feuil1(Feuil1) Feuil2(Feuil2)
Le premier Feuil1 c'est ce qui est utilisé dans la ligne de code suivante Set sh = Worksheets(.VBComponents("Feuil1").Properties("Index"))
(Feuil1) représente le nom de l'onglet de la feuille où se retrouve la cellule B2. Selon ton environnement, tu peux modifier ce nom. La procédure suppose que ce nom est le même pour tous les fichiers.
Ce nom (propriété name) n'est pas altéré même si l'usager change le nom de l'onglet de la feuille de calcul.
Attention de te méprendre sur la désignation du nom de l'objet "Feuille".
Essaie ceci, j'ai modifié le fichier de la macro complémentaire
http://cjoint.com/?CHfoBxqclRn
La procédure dans ce fichier utilise le nom de la propriété "Name"
de l'objet "Feuille" dans le classeur. Dans l'arborescence des
objets du projetVBA du fichier, la liste des feuilles s'affiche de
cette façon :
Feuil1(Feuil1)
Feuil2(Feuil2)
Le premier Feuil1 c'est ce qui est utilisé dans la ligne de code suivante
Set sh = Worksheets(.VBComponents("Feuil1").Properties("Index"))
(Feuil1) représente le nom de l'onglet de la feuille où se retrouve
la cellule B2. Selon ton environnement, tu peux modifier ce nom.
La procédure suppose que ce nom est le même pour tous les fichiers.
Ce nom (propriété name) n'est pas altéré même si l'usager change
le nom de l'onglet de la feuille de calcul.
Attention de te méprendre sur la désignation du nom de l'objet "Feuille".
Essaie ceci, j'ai modifié le fichier de la macro complémentaire
http://cjoint.com/?CHfoBxqclRn
La procédure dans ce fichier utilise le nom de la propriété "Name" de l'objet "Feuille" dans le classeur. Dans l'arborescence des objets du projetVBA du fichier, la liste des feuilles s'affiche de cette façon :
Feuil1(Feuil1) Feuil2(Feuil2)
Le premier Feuil1 c'est ce qui est utilisé dans la ligne de code suivante Set sh = Worksheets(.VBComponents("Feuil1").Properties("Index"))
(Feuil1) représente le nom de l'onglet de la feuille où se retrouve la cellule B2. Selon ton environnement, tu peux modifier ce nom. La procédure suppose que ce nom est le même pour tous les fichiers.
Ce nom (propriété name) n'est pas altéré même si l'usager change le nom de l'onglet de la feuille de calcul.
Attention de te méprendre sur la désignation du nom de l'objet "Feuille".
je vais donc reprendre le plus explicitement possible
je possede 30 classeurs excel qui ont tous au moins une feuille appelée c ommentaire
dans cette feuille commentaire , en cellule B2 du texte ecris par mon inter locuteur
chaque mois, je veux recuperer la date de modification du commentaire
or avec ta premiere solution , meme si le commentaire ne changeait pas, la date d'enregistrement était elle prise en compte
avec ton 2eme exemple, il prend une date en B2 et fait un comparatif avec l a date du dernier enregistrement
il est important pour moi de prendre en compte la date de modification de l a cellule B2 de la feuille commentaire si et seulement si celui ci a ét é modifié.
la date et le environ"(username") seront positionnés en A50 et B50 de cet te meme feuille commentaire
je te joins un fichier exemple
je ne sais pas quoi y inscrire dans le thisworkbook pour faire appel à la macro complementaire
merci encore de t'impliquer dans ce qui est pour moi insurmontable
bonne journée
http://cjoint.com/?CHglje3vyIL
Le lundi 5 août 2013 21:59:57 UTC+2, MichD a écrit :
Voici le fichier : http://cjoint.com/?CHfv4hS1AR5
Regarde les explications dans le module de la feuil1.
Si tu observes des choses qui ne fonctionnent pas comme tu le
voudrais, tu dois m'expliquer ce qui ne va pas le plus précisément
je vais donc reprendre le plus explicitement possible
je possede 30 classeurs excel qui ont tous au moins une feuille appelée c ommentaire
dans cette feuille commentaire , en cellule B2 du texte ecris par mon inter locuteur
chaque mois, je veux recuperer la date de modification du commentaire
or avec ta premiere solution , meme si le commentaire ne changeait pas, la date d'enregistrement était elle prise en compte
avec ton 2eme exemple, il prend une date en B2 et fait un comparatif avec l a date du dernier enregistrement
il est important pour moi de prendre en compte la date de modification de l a cellule B2 de la feuille commentaire si et seulement si celui ci a ét é modifié.
la date et le environ"(username") seront positionnés en A50 et B50 de cet te meme feuille commentaire
je te joins un fichier exemple
je ne sais pas quoi y inscrire dans le thisworkbook pour faire appel à la macro complementaire
merci encore de t'impliquer dans ce qui est pour moi insurmontable
bonne journée
http://cjoint.com/?CHglje3vyIL
Le lundi 5 août 2013 21:59:57 UTC+2, MichD a écrit :
Voici le fichier : http://cjoint.com/?CHfv4hS1AR5
Regarde les explications dans le module de la feuil1.
Si tu observes des choses qui ne fonctionnent pas comme tu le
voudrais, tu dois m'expliquer ce qui ne va pas le plus précisément
je vais donc reprendre le plus explicitement possible
je possede 30 classeurs excel qui ont tous au moins une feuille appelée c ommentaire
dans cette feuille commentaire , en cellule B2 du texte ecris par mon inter locuteur
chaque mois, je veux recuperer la date de modification du commentaire
or avec ta premiere solution , meme si le commentaire ne changeait pas, la date d'enregistrement était elle prise en compte
avec ton 2eme exemple, il prend une date en B2 et fait un comparatif avec l a date du dernier enregistrement
il est important pour moi de prendre en compte la date de modification de l a cellule B2 de la feuille commentaire si et seulement si celui ci a ét é modifié.
la date et le environ"(username") seront positionnés en A50 et B50 de cet te meme feuille commentaire
je te joins un fichier exemple
je ne sais pas quoi y inscrire dans le thisworkbook pour faire appel à la macro complementaire
merci encore de t'impliquer dans ce qui est pour moi insurmontable
bonne journée
http://cjoint.com/?CHglje3vyIL
Le lundi 5 août 2013 21:59:57 UTC+2, MichD a écrit :
Voici le fichier : http://cjoint.com/?CHfv4hS1AR5
Regarde les explications dans le module de la feuil1.
Si tu observes des choses qui ne fonctionnent pas comme tu le
voudrais, tu dois m'expliquer ce qui ne va pas le plus précisément
Voici une nouvelle copie du fichier de macros complémentaires : http://cjoint.com/?CHgo4Twie9I
Ce fichier traite tous les classeurs contenant une feuille nommée "commentaires".
Si durant la session de travail, l'usager modifie la cellule B2 de la feuille commentaire, la date + l'heure du changement sera enregistrée dans un "NOM (NAME) dudit fichier. Ce nom n'est pas visible par l'usager, mais accessible par VBA. Je t'ai déjà donné la ligne de code!
Lorsque B2 de la feuille commentaire est modifié, le fichier s'enregistrera automatiquement.
Tout le code du module de classe est expliqué.
Tu peux ouvrir autant de fichiers que tu désires, ils seront tous traités. Aucun code n'est à ajouter aux classeurs ouverts si ce n'est que pour trouver la valeur du nom masqué "LaDate"
Voici une nouvelle copie du fichier de macros complémentaires :
http://cjoint.com/?CHgo4Twie9I
Ce fichier traite tous les classeurs contenant une feuille nommée
"commentaires".
Si durant la session de travail, l'usager modifie la cellule B2 de la
feuille
commentaire, la date + l'heure du changement sera enregistrée dans un
"NOM (NAME) dudit fichier. Ce nom n'est pas visible par l'usager, mais
accessible par VBA. Je t'ai déjà donné la ligne de code!
Lorsque B2 de la feuille commentaire est modifié, le fichier s'enregistrera
automatiquement.
Tout le code du module de classe est expliqué.
Tu peux ouvrir autant de fichiers que tu désires, ils seront tous traités.
Aucun code n'est à ajouter aux classeurs ouverts si ce n'est que pour
trouver la valeur du nom masqué "LaDate"
Voici une nouvelle copie du fichier de macros complémentaires : http://cjoint.com/?CHgo4Twie9I
Ce fichier traite tous les classeurs contenant une feuille nommée "commentaires".
Si durant la session de travail, l'usager modifie la cellule B2 de la feuille commentaire, la date + l'heure du changement sera enregistrée dans un "NOM (NAME) dudit fichier. Ce nom n'est pas visible par l'usager, mais accessible par VBA. Je t'ai déjà donné la ligne de code!
Lorsque B2 de la feuille commentaire est modifié, le fichier s'enregistrera automatiquement.
Tout le code du module de classe est expliqué.
Tu peux ouvrir autant de fichiers que tu désires, ils seront tous traités. Aucun code n'est à ajouter aux classeurs ouverts si ce n'est que pour trouver la valeur du nom masqué "LaDate"
Et si tu veux extraire la date de la dernière modification de la cellule B2 du fichier actif (affiché à l'écran), tu peux mettre cette macro dans ton classeur de macros personnelles. Cela laissera totalement libres tous tes classeurs de la moindre ligne de code.
Si rien ne se passe lors de l'exécution, le fichier ne contient pas un Name LaDate et par conséquent, le contenu de B2 n'a pas été modifié ou le fichier ne contient pas une feuille "Commentaires".
'------------------------------------------ Sub Date_Dernière_Modification_B2() Dim X As Variant On Error Resume Next X = Evaluate("LaDate") If IsError(X) Then Err.Clear Else MsgBox Format(CDbl(Evaluate("LaDate")), "DD MMM YYYY H:MM:SS") End If End Sub '------------------------------------------
Et si tu veux extraire la date de la dernière modification
de la cellule B2 du fichier actif (affiché à l'écran), tu peux
mettre cette macro dans ton classeur de macros personnelles.
Cela laissera totalement libres tous tes classeurs de la moindre
ligne de code.
Si rien ne se passe lors de l'exécution, le fichier ne contient
pas un Name LaDate et par conséquent, le contenu de B2
n'a pas été modifié ou le fichier ne contient pas une feuille
"Commentaires".
'------------------------------------------
Sub Date_Dernière_Modification_B2()
Dim X As Variant
On Error Resume Next
X = Evaluate("LaDate")
If IsError(X) Then
Err.Clear
Else
MsgBox Format(CDbl(Evaluate("LaDate")), "DD MMM YYYY H:MM:SS")
End If
End Sub
'------------------------------------------
Et si tu veux extraire la date de la dernière modification de la cellule B2 du fichier actif (affiché à l'écran), tu peux mettre cette macro dans ton classeur de macros personnelles. Cela laissera totalement libres tous tes classeurs de la moindre ligne de code.
Si rien ne se passe lors de l'exécution, le fichier ne contient pas un Name LaDate et par conséquent, le contenu de B2 n'a pas été modifié ou le fichier ne contient pas une feuille "Commentaires".
'------------------------------------------ Sub Date_Dernière_Modification_B2() Dim X As Variant On Error Resume Next X = Evaluate("LaDate") If IsError(X) Then Err.Clear Else MsgBox Format(CDbl(Evaluate("LaDate")), "DD MMM YYYY H:MM:SS") End If End Sub '------------------------------------------
Dans le module de classe, je viens de me rendre compte qu'il y a une petite coquille. Remplace le code actuel par celui-ci :
J'ai omis dans le classeur précédent, ce petit test : If Not IsEmpty(.Range("C" & X)) Then '<<<<< Ligne ajoutée
'---------------------------------------- Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Dim NomClasseur As String, X As Variant
With ThisWorkbook ' (classeur de la macro complémentaire) With .Worksheets("Feuil1") 'Extraire le nom du classeur NomClasseur = Wb.Name 'Identifie la ligne où est contenu de nom du classeur X = Application.Match(NomClasseur, .Range("A:A"), 0) 'teste si le nom du classeur a été trouvé If IsNumeric(X) Then 'Si .Range("C" & x ) est vide, c'est sûr qu'il 'n'y a eu aucune changement If Not IsEmpty(.Range("C" & X)) Then '<<<<< Ligne ajoutée 'Vérifie si depuis l'ouverture du fichier la valeur 'de la cellue B2 a été modifié If .Range("C" & X) <> .Range("B" & X) Then 'Si oui, on enregistre la date de fermeture du fichier 'en créant un nom (Name) LaDate , contenant la date + l'heure Wb.Names.Add "LaDate", Now(), False 'Afin de s'assurer de conserver cette donnée, le fichier 'est enregistré automatiquement. Wb.Save End If End If End If End With End With End Sub '----------------------------------------
Dans le module de classe, je viens de me rendre
compte qu'il y a une petite coquille. Remplace
le code actuel par celui-ci :
J'ai omis dans le classeur précédent, ce petit test :
If Not IsEmpty(.Range("C" & X)) Then '<<<<< Ligne ajoutée
'----------------------------------------
Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As
Boolean)
Dim NomClasseur As String, X As Variant
With ThisWorkbook ' (classeur de la macro complémentaire)
With .Worksheets("Feuil1")
'Extraire le nom du classeur
NomClasseur = Wb.Name
'Identifie la ligne où est contenu de nom du classeur
X = Application.Match(NomClasseur, .Range("A:A"), 0)
'teste si le nom du classeur a été trouvé
If IsNumeric(X) Then
'Si .Range("C" & x ) est vide, c'est sûr qu'il
'n'y a eu aucune changement
If Not IsEmpty(.Range("C" & X)) Then '<<<<< Ligne ajoutée
'Vérifie si depuis l'ouverture du fichier la valeur
'de la cellue B2 a été modifié
If .Range("C" & X) <> .Range("B" & X) Then
'Si oui, on enregistre la date de fermeture du fichier
'en créant un nom (Name) LaDate , contenant la date +
l'heure
Wb.Names.Add "LaDate", Now(), False
'Afin de s'assurer de conserver cette donnée, le fichier
'est enregistré automatiquement.
Wb.Save
End If
End If
End If
End With
End With
End Sub
'----------------------------------------
Dans le module de classe, je viens de me rendre compte qu'il y a une petite coquille. Remplace le code actuel par celui-ci :
J'ai omis dans le classeur précédent, ce petit test : If Not IsEmpty(.Range("C" & X)) Then '<<<<< Ligne ajoutée
'---------------------------------------- Private Sub AppXl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Dim NomClasseur As String, X As Variant
With ThisWorkbook ' (classeur de la macro complémentaire) With .Worksheets("Feuil1") 'Extraire le nom du classeur NomClasseur = Wb.Name 'Identifie la ligne où est contenu de nom du classeur X = Application.Match(NomClasseur, .Range("A:A"), 0) 'teste si le nom du classeur a été trouvé If IsNumeric(X) Then 'Si .Range("C" & x ) est vide, c'est sûr qu'il 'n'y a eu aucune changement If Not IsEmpty(.Range("C" & X)) Then '<<<<< Ligne ajoutée 'Vérifie si depuis l'ouverture du fichier la valeur 'de la cellue B2 a été modifié If .Range("C" & X) <> .Range("B" & X) Then 'Si oui, on enregistre la date de fermeture du fichier 'en créant un nom (Name) LaDate , contenant la date + l'heure Wb.Names.Add "LaDate", Now(), False 'Afin de s'assurer de conserver cette donnée, le fichier 'est enregistré automatiquement. Wb.Save End If End If End If End With End With End Sub '----------------------------------------