Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Implémenter des données d'une feuille dans un classeur fermé

8 réponses
Avatar
BlackStorm
Bonsoir à toutes et a tous,

Je viens vous demander votre aide. Je vous expose mon problème :
J'ai une feuille Excel dans laquelle nous archivons le suivi des appels
téléphoniques.
Est noté dans cette feuille le nom du destinataire (collègue en interne),
l'objet de l'appel, le nom de l'interlocuteur. A des fins de suivi qualité,
je veux savoir , lorsque le message est pris, si le destinataire interne a
bien pris connaissance du message et surtout à quel moment il a répondu.
A coté de cela, j'ai crée autant de classeur Excel qu'il y a de collègue.
Je veux que les données de la feuille Prise de Message soient copiées
automatiquement dans le classeur du collègue destinataire du message. A lui
de consulter son classeur et de le mettre à jour.
Un controle a posteriori sera fait 1 fois par semaine.

Si vous avez une solution... Merci par avance pour votre et vos conseils...

8 réponses

Avatar
Hervé
Bonsoir BlackStorm,
En admettant que tes champs (Destinataire, Objet et Interlocuteur) soit
respectivement en colonne A, B et C de la feuille "Prise de Message", et que
les classeurs de chaque collègue portent leurs noms respectifs (celui du
destinataire en colonne A) et qu'ils soient tous dans le même dossier. La
feuille, ici pour l'exemple, "Feuil1" (passée en argument que tu peux
adapter) doit avoir elle aussi 3 entêtes de colonne (le nom importe peu) en
A, B et C (sinon, erreur :o(( )
Comme je suppose que tous les classeurs ne sont pas ouvert, la proc utilise
ADO en relation tardive (évite de cocher la référence) et elle fonctionne de
la manière suivante :
Après avoir rempli les trois champs (A, B et C), si ils ne sont pas vide,
les valeurs sont enregistrées dans le classeur portant le nom du
destinataire (colonne A) et dans la feuille "Feuil1" (à adapter). Ici il n'y
a pas de contrôle sur les valeurs (donc si tu rentre n'importe quoi tu aura
ces dernières enregistrées) ni sur les modifications qui seront dans ce cas
traitées comme de nouveaux enregistrement et donc ajoutés dans le classeur
correspondant. Si des modifications risque d'être faites et que tu souhaite
qu'elles soient appliquées dans le classeur correspondant il faudra écrire
un peu plus de code (SQL > UPDATE). Fais d'abords un test sur des classeurs
bidons.
Ah oui, mets tout le code dans le module de la feuille "Prise de Message" :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A:C]) Is Nothing Then
If Range("A" & Target.Row).Value <> "" And _
Range("B" & Target.Row).Value <> "" And _
Range("C" & Target.Row).Value <> "" Then
Ajout Range("A" & Target.Row).Value, _
Range("B" & Target.Row).Value, _
Range("C" & Target.Row).Value, _
"Feuil1" 'adapte le nom
End If
End If
End Sub

Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""
End Sub

Sub Ajout(Destinataire As String, _
Objet As String, _
Interlocuteur As String, _
NomFeuille As String)

Dim ConnectBD As Object
Dim ChaineSQL As String
Dim I As Integer

ConnectCLasseur ConnectBD, "D:" & Destinataire & ".xls"

ChaineSQL = "INSERT INTO `" & NomFeuille & "$`"
ChaineSQL = ChaineSQL & "(F1,F2,F3) "
ChaineSQL = ChaineSQL & "VALUES ('" _
& Destinataire & "','" _
& Objet & "','" _
& Interlocuteur & "')"

ConnectBD.Execute ChaineSQL
ConnectBD.Close
Set ConnectBD = Nothing

End Sub

Hervé.

"BlackStorm" a écrit dans le message news:

Bonsoir à toutes et a tous,

Je viens vous demander votre aide. Je vous expose mon problème :
J'ai une feuille Excel dans laquelle nous archivons le suivi des appels
téléphoniques.
Est noté dans cette feuille le nom du destinataire (collègue en interne),
l'objet de l'appel, le nom de l'interlocuteur. A des fins de suivi
qualité,

je veux savoir , lorsque le message est pris, si le destinataire interne a
bien pris connaissance du message et surtout à quel moment il a répondu.
A coté de cela, j'ai crée autant de classeur Excel qu'il y a de collègue.
Je veux que les données de la feuille Prise de Message soient copiées
automatiquement dans le classeur du collègue destinataire du message. A
lui

de consulter son classeur et de le mettre à jour.
Un controle a posteriori sera fait 1 fois par semaine.

Si vous avez une solution... Merci par avance pour votre et vos
conseils...





Avatar
JièL Goubert
Bonjoir(c) Hervé

bel effort pour transformer Excel en SGBD, mais ça me semble un peu usine
à gaz quand même ;-)

bien du courage pour la maintenance, mise à jour et évolution (qui ne
manquerons pas d'être demandées bien sur :->) de ce genre de truc ;-)

mais bon, c'que j'en dis moi... toujours le probléme du marteau comme seul
outils. Dommage.

JièL Toujours aussi marteau ;-)

Le 22/06/2005 21:31 vous avez écrit ceci :
Bonsoir BlackStorm,
En admettant que tes champs (Destinataire, Objet et Interlocuteur) soit
respectivement en colonne A, B et C de la feuille "Prise de Message", et que
les classeurs de chaque collègue portent leurs noms respectifs (celui du
destinataire en colonne A) et qu'ils soient tous dans le même dossier. La
feuille, ici pour l'exemple, "Feuil1" (passée en argument que tu peux
adapter) doit avoir elle aussi 3 entêtes de colonne (le nom importe peu) en
A, B et C (sinon, erreur :o(( )
Comme je suppose que tous les classeurs ne sont pas ouvert, la proc utilise
ADO en relation tardive (évite de cocher la référence) et elle fonctionne de
la manière suivante :
Après avoir rempli les trois champs (A, B et C), si ils ne sont pas vide,
les valeurs sont enregistrées dans le classeur portant le nom du
destinataire (colonne A) et dans la feuille "Feuil1" (à adapter). Ici il n'y
a pas de contrôle sur les valeurs (donc si tu rentre n'importe quoi tu aura
ces dernières enregistrées) ni sur les modifications qui seront dans ce cas
traitées comme de nouveaux enregistrement et donc ajoutés dans le classeur
correspondant. Si des modifications risque d'être faites et que tu souhaite
qu'elles soient appliquées dans le classeur correspondant il faudra écrire
un peu plus de code (SQL > UPDATE). Fais d'abords un test sur des classeurs
bidons.
Ah oui, mets tout le code dans le module de la feuille "Prise de Message" :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A:C]) Is Nothing Then
If Range("A" & Target.Row).Value <> "" And _
Range("B" & Target.Row).Value <> "" And _
Range("C" & Target.Row).Value <> "" Then
Ajout Range("A" & Target.Row).Value, _
Range("B" & Target.Row).Value, _
Range("C" & Target.Row).Value, _
"Feuil1" 'adapte le nom
End If
End If
End Sub

Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""
End Sub

Sub Ajout(Destinataire As String, _
Objet As String, _
Interlocuteur As String, _
NomFeuille As String)

Dim ConnectBD As Object
Dim ChaineSQL As String
Dim I As Integer

ConnectCLasseur ConnectBD, "D:" & Destinataire & ".xls"

ChaineSQL = "INSERT INTO `" & NomFeuille & "$`"
ChaineSQL = ChaineSQL & "(F1,F2,F3) "
ChaineSQL = ChaineSQL & "VALUES ('" _
& Destinataire & "','" _
& Objet & "','" _
& Interlocuteur & "')"

ConnectBD.Execute ChaineSQL
ConnectBD.Close
Set ConnectBD = Nothing

End Sub

Hervé.

"BlackStorm" a écrit dans le message news:


Bonsoir à toutes et a tous,

Je viens vous demander votre aide. Je vous expose mon problème :
J'ai une feuille Excel dans laquelle nous archivons le suivi des appels
téléphoniques.
Est noté dans cette feuille le nom du destinataire (collègue en interne),
l'objet de l'appel, le nom de l'interlocuteur. A des fins de suivi


qualité,

je veux savoir , lorsque le message est pris, si le destinataire interne a
bien pris connaissance du message et surtout à quel moment il a répondu.
A coté de cela, j'ai crée autant de classeur Excel qu'il y a de collègue.
Je veux que les données de la feuille Prise de Message soient copiées
automatiquement dans le classeur du collègue destinataire du message. A


lui

de consulter son classeur et de le mettre à jour.
Un controle a posteriori sera fait 1 fois par semaine.

Si vous avez une solution... Merci par avance pour votre et vos


conseils...



Avatar
Hervé
Bonsoir JièL,
Effectivement, c'est une usine à gaz mais c'est toujours mieux que rien.
Quand tu es en panne de super 98 et que l'on te dépanne avec du 95 c'est
toujours bon à prendre et surtout, c'est mieux que de pousser non ? ;o))
Pour ce qui est du marteau, mon grand père disait "pas de bonne mécanique
sans marteau" alors, je suis à la lettre ! (et le l'emploi à tour de bras)
Salutations du gazier ;o)
Hervé.

"JièL Goubert" a écrit dans le
message news: ##
Bonjoir(c) Hervé

bel effort pour transformer Excel en SGBD, mais ça me semble un peu usine
à gaz quand même ;-)

bien du courage pour la maintenance, mise à jour et évolution (qui ne
manquerons pas d'être demandées bien sur :->) de ce genre de truc ;-)

mais bon, c'que j'en dis moi... toujours le probléme du marteau comme seul
outils. Dommage.

JièL Toujours aussi marteau ;-)

Le 22/06/2005 21:31 vous avez écrit ceci :
Bonsoir BlackStorm,
En admettant que tes champs (Destinataire, Objet et Interlocuteur) soit
respectivement en colonne A, B et C de la feuille "Prise de Message", et
que


les classeurs de chaque collègue portent leurs noms respectifs (celui du
destinataire en colonne A) et qu'ils soient tous dans le même dossier.
La


feuille, ici pour l'exemple, "Feuil1" (passée en argument que tu peux
adapter) doit avoir elle aussi 3 entêtes de colonne (le nom importe peu)
en


A, B et C (sinon, erreur :o(( )
Comme je suppose que tous les classeurs ne sont pas ouvert, la proc
utilise


ADO en relation tardive (évite de cocher la référence) et elle
fonctionne de


la manière suivante :
Après avoir rempli les trois champs (A, B et C), si ils ne sont pas
vide,


les valeurs sont enregistrées dans le classeur portant le nom du
destinataire (colonne A) et dans la feuille "Feuil1" (à adapter). Ici il
n'y


a pas de contrôle sur les valeurs (donc si tu rentre n'importe quoi tu
aura


ces dernières enregistrées) ni sur les modifications qui seront dans ce
cas


traitées comme de nouveaux enregistrement et donc ajoutés dans le
classeur


correspondant. Si des modifications risque d'être faites et que tu
souhaite


qu'elles soient appliquées dans le classeur correspondant il faudra
écrire


un peu plus de code (SQL > UPDATE). Fais d'abords un test sur des
classeurs


bidons.
Ah oui, mets tout le code dans le module de la feuille "Prise de
Message" :



Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A:C]) Is Nothing Then
If Range("A" & Target.Row).Value <> "" And _
Range("B" & Target.Row).Value <> "" And _
Range("C" & Target.Row).Value <> "" Then
Ajout Range("A" & Target.Row).Value, _
Range("B" & Target.Row).Value, _
Range("C" & Target.Row).Value, _
"Feuil1" 'adapte le nom
End If
End If
End Sub

Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""
End Sub

Sub Ajout(Destinataire As String, _
Objet As String, _
Interlocuteur As String, _
NomFeuille As String)

Dim ConnectBD As Object
Dim ChaineSQL As String
Dim I As Integer

ConnectCLasseur ConnectBD, "D:" & Destinataire & ".xls"

ChaineSQL = "INSERT INTO `" & NomFeuille & "$`"
ChaineSQL = ChaineSQL & "(F1,F2,F3) "
ChaineSQL = ChaineSQL & "VALUES ('" _
& Destinataire & "','" _
& Objet & "','" _
& Interlocuteur & "')"

ConnectBD.Execute ChaineSQL
ConnectBD.Close
Set ConnectBD = Nothing

End Sub

Hervé.

"BlackStorm" a écrit dans le message news:


Bonsoir à toutes et a tous,

Je viens vous demander votre aide. Je vous expose mon problème :
J'ai une feuille Excel dans laquelle nous archivons le suivi des appels
téléphoniques.
Est noté dans cette feuille le nom du destinataire (collègue en
interne),



l'objet de l'appel, le nom de l'interlocuteur. A des fins de suivi


qualité,

je veux savoir , lorsque le message est pris, si le destinataire interne
a



bien pris connaissance du message et surtout à quel moment il a répondu.
A coté de cela, j'ai crée autant de classeur Excel qu'il y a de
collègue.



Je veux que les données de la feuille Prise de Message soient copiées
automatiquement dans le classeur du collègue destinataire du message. A


lui

de consulter son classeur et de le mettre à jour.
Un controle a posteriori sera fait 1 fois par semaine.

Si vous avez une solution... Merci par avance pour votre et vos


conseils...





Avatar
BlackStorm
Big merci à tous,

Je sais que c'est un peu tiré par les cheveux, mais j'ai comme application
Word & Excel. La boite ne peut pas investir, donc je fais avec les moyens du
bord et avec votre aide à tous !!

J'aurai certainement des questions complémentaires...

"Hervé" a écrit dans le message de news:
#
Bonsoir JièL,
Effectivement, c'est une usine à gaz mais c'est toujours mieux que rien.
Quand tu es en panne de super 98 et que l'on te dépanne avec du 95 c'est
toujours bon à prendre et surtout, c'est mieux que de pousser non ? ;o))
Pour ce qui est du marteau, mon grand père disait "pas de bonne mécanique
sans marteau" alors, je suis à la lettre ! (et le l'emploi à tour de bras)
Salutations du gazier ;o)
Hervé.

"JièL Goubert" a écrit dans le
message news: ##
Bonjoir(c) Hervé

bel effort pour transformer Excel en SGBD, mais ça me semble un peu
usine


à gaz quand même ;-)

bien du courage pour la maintenance, mise à jour et évolution (qui ne
manquerons pas d'être demandées bien sur :->) de ce genre de truc ;-)

mais bon, c'que j'en dis moi... toujours le probléme du marteau comme
seul


outils. Dommage.

JièL Toujours aussi marteau ;-)

Le 22/06/2005 21:31 vous avez écrit ceci :
Bonsoir BlackStorm,
En admettant que tes champs (Destinataire, Objet et Interlocuteur)
soit



respectivement en colonne A, B et C de la feuille "Prise de Message",
et



que
les classeurs de chaque collègue portent leurs noms respectifs (celui
du



destinataire en colonne A) et qu'ils soient tous dans le même dossier.
La


feuille, ici pour l'exemple, "Feuil1" (passée en argument que tu peux
adapter) doit avoir elle aussi 3 entêtes de colonne (le nom importe
peu)



en
A, B et C (sinon, erreur :o(( )
Comme je suppose que tous les classeurs ne sont pas ouvert, la proc
utilise


ADO en relation tardive (évite de cocher la référence) et elle
fonctionne de


la manière suivante :
Après avoir rempli les trois champs (A, B et C), si ils ne sont pas
vide,


les valeurs sont enregistrées dans le classeur portant le nom du
destinataire (colonne A) et dans la feuille "Feuil1" (à adapter). Ici
il



n'y
a pas de contrôle sur les valeurs (donc si tu rentre n'importe quoi tu
aura


ces dernières enregistrées) ni sur les modifications qui seront dans
ce



cas
traitées comme de nouveaux enregistrement et donc ajoutés dans le
classeur


correspondant. Si des modifications risque d'être faites et que tu
souhaite


qu'elles soient appliquées dans le classeur correspondant il faudra
écrire


un peu plus de code (SQL > UPDATE). Fais d'abords un test sur des
classeurs


bidons.
Ah oui, mets tout le code dans le module de la feuille "Prise de
Message" :



Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A:C]) Is Nothing Then
If Range("A" & Target.Row).Value <> "" And _
Range("B" & Target.Row).Value <> "" And _
Range("C" & Target.Row).Value <> "" Then
Ajout Range("A" & Target.Row).Value, _
Range("B" & Target.Row).Value, _
Range("C" & Target.Row).Value, _
"Feuil1" 'adapte le nom
End If
End If
End Sub

Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""
End Sub

Sub Ajout(Destinataire As String, _
Objet As String, _
Interlocuteur As String, _
NomFeuille As String)

Dim ConnectBD As Object
Dim ChaineSQL As String
Dim I As Integer

ConnectCLasseur ConnectBD, "D:" & Destinataire & ".xls"

ChaineSQL = "INSERT INTO `" & NomFeuille & "$`"
ChaineSQL = ChaineSQL & "(F1,F2,F3) "
ChaineSQL = ChaineSQL & "VALUES ('" _
& Destinataire & "','" _
& Objet & "','" _
& Interlocuteur & "')"

ConnectBD.Execute ChaineSQL
ConnectBD.Close
Set ConnectBD = Nothing

End Sub

Hervé.

"BlackStorm" a écrit dans le message news:


Bonsoir à toutes et a tous,

Je viens vous demander votre aide. Je vous expose mon problème :
J'ai une feuille Excel dans laquelle nous archivons le suivi des
appels




téléphoniques.
Est noté dans cette feuille le nom du destinataire (collègue en
interne),



l'objet de l'appel, le nom de l'interlocuteur. A des fins de suivi


qualité,

je veux savoir , lorsque le message est pris, si le destinataire
interne




a
bien pris connaissance du message et surtout à quel moment il a
répondu.




A coté de cela, j'ai crée autant de classeur Excel qu'il y a de
collègue.



Je veux que les données de la feuille Prise de Message soient copiées
automatiquement dans le classeur du collègue destinataire du message.
A





lui

de consulter son classeur et de le mettre à jour.
Un controle a posteriori sera fait 1 fois par semaine.

Si vous avez une solution... Merci par avance pour votre et vos


conseils...









Avatar
JièL Goubert
Bonjoir(c) Hervé

certes, j'ai toujours un marteau avec moi quand j'ouvre un PC, on sait
jamais ;-)

Ceci dit, je reste persuadé que sans bons outils on ne fait pas du bon
travail. Mais ce n'est que mon avis, il n'engage que moi et je sais que
beaucoup font faire les pieds au mur à leur tableur préféré.

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr/

Le 23/06/2005 19:59 vous avez écrit ceci :
Bonsoir JièL,
Effectivement, c'est une usine à gaz mais c'est toujours mieux que rien.
Quand tu es en panne de super 98 et que l'on te dépanne avec du 95 c'est
toujours bon à prendre et surtout, c'est mieux que de pousser non ? ;o))
Pour ce qui est du marteau, mon grand père disait "pas de bonne mécanique
sans marteau" alors, je suis à la lettre ! (et le l'emploi à tour de bras)
Salutations du gazier ;o)
Hervé.


Avatar
JièL Goubert
Bonjoir(c) BlackStorm

Voici ce que j'en pense : combien de temps allez vous passez à tenter de
faire fonctionner un truc qui ne sera pas du tout, mais alors pas du tout
simple à gérer ? Ca à bien un cout ce temps la, non ? Comment allez vous
vous assurez que les données sont cohérentes ? quels sont les évolutions
qui seront demandées pour ce truc ingérable (ça c'est impossible à
prédire, mais on peut largement prévoir qu'un truc de 5mn va devenir un
truc de 5 mois :->)

Enfin, ce que j'en dis...

Tout ça pour dire que les prix est un FAUX argument !!!
Bon courage quand même.

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr/


Le 24/06/2005 19:36 vous avez écrit ceci :
Big merci à tous,

Je sais que c'est un peu tiré par les cheveux, mais j'ai comme application
Word & Excel. La boite ne peut pas investir, donc je fais avec les moyens du
bord et avec votre aide à tous !!

J'aurai certainement des questions complémentaires...


Avatar
Modeste
Bonsour® JièL©
certes, j'ai toujours un marteau avec moi quand j'ouvre un PC, on sait
jamais ;-)

tant que tu n'as pas de faux cils ....
;o)))

Ceci dit, je reste persuadé que sans bons outils on ne fait pas du bon
travail.

Mais ce n'est que mon avis, il n'engage que moi et je sais que beaucoup
font faire les pieds au mur à leur tableur préféré.


par exemple : avancer le support pour la tasse ...
mais toujours pas trouvé ou mettre l'eau et le café moulu ????

La boite ne peut pas investir, donc je fais avec les moyens du bord et
avec votre aide à tous !!

Tu sais Jean-Louis, même dans les grandes boites avec des moyens...
les décideurs n'ont pas toujours conscience des besoins terre à terre des
gens du terrain.
dans mon ancienne boite nous avions Business Objects(Supervisor, Designer,
Reporter),
les utilisateurs (Repoorter,WebI) finaux ("finauds") souhaitaient souvent
rapprocher des données
que les programmeurs dont je faisais partie n'avais pas idée...
et comme nos décideurs avaient verrouillé la partie VBA, et bien il restait
: ........ EXCEL ;o)))

nb: notre DI était également président du CIGREF
http://minilien.com/?nZwDE8908G

Avatar
JièL Goubert
Bonjoir(c) Modeste

Le 25/06/2005 01:05 vous avez écrit ceci :
nb: notre DI était également président du CIGREF
http://minilien.com/?nZwDE8908G


celle la elle est excel-lente ;-).
Dans le genre faite ce que je dis, pas ce que je fais, c'est un super
exemple ;-)))))))

--
JièL / Jean-Louis GOUBERT
La FAQ Outlook est la : http://faq.outlook.free.fr/