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

RECHERCHE EN EXCEL

11 réponses
Avatar
JU300
Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !

10 réponses

1 2
Avatar
FFO
Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !


Avatar
JU300
Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !




Avatar
FFO
Rebonjours
Comme je te l'ai précisé tu mets le code dans le VBA ThisWorKbook du classeur
Il s'éxécutera à l'ouverture de celui-ci
Outils/Macro/Visual Basic Editor
Dans la fenetre de gauche ("Projet-VBAProject) doublecliques sur ThisWorBook
Colles dans la fenètre de droite qui vient de s'ouvrir le code corrigé en
fonction de tes dernières précisions :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([H1], [H65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -7)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = c.Offset(0, -1)
Jour = c.Offset(0, -7)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([I1], [I65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -8)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = c.Offset(0, -2)
Jour = c.Offset(0, -8)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub


Je te conseille de travailler dans un premier temps avec une copie pour
t'affranchir de tout risque d'erreur

Fais moi part de tes impressions !!!


Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !






Avatar
JU300
Salut !

Merci bien pour cette réponse.

Je ne sais pas ce qui se passe mais le programme ne s'exécute toujours pas
au démarrage.

Une autre chose, c'est que peut importe ce que j'introduis comme n° de
contrat ou n° de client, la réponse qui est systématiquement renvoyée est :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Donc, cela ne tient compte ni de la date ni de ce qui a été encodé.

Je pourrais peut-être t'envoyer le fichier.

Si tu peux continuer à m'aider, ce serait vraiment super sympa pcq ça me
rendrait un grand service.

Je vais essayer de mettre ce fichier sur un serveur dès que possible pour
que tu vois exactement à quoi ressemble mon fichier.

En tout cas, merci pour tout !


Rebonjours
Comme je te l'ai précisé tu mets le code dans le VBA ThisWorKbook du classeur
Il s'éxécutera à l'ouverture de celui-ci
Outils/Macro/Visual Basic Editor
Dans la fenetre de gauche ("Projet-VBAProject) doublecliques sur ThisWorBook
Colles dans la fenètre de droite qui vient de s'ouvrir le code corrigé en
fonction de tes dernières précisions :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([H1], [H65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -7)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = c.Offset(0, -1)
Jour = c.Offset(0, -7)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([I1], [I65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -8)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = c.Offset(0, -2)
Jour = c.Offset(0, -8)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub


Je te conseille de travailler dans un premier temps avec une copie pour
t'affranchir de tout risque d'erreur

Fais moi part de tes impressions !!!


Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !








Avatar
JU300
Désolé.

Erreur de manipulation.

Donc OK pour l'exécution dès le double click mais toujours problème pour le
reste.

Merci !


Salut !

Merci bien pour cette réponse.

Je ne sais pas ce qui se passe mais le programme ne s'exécute toujours pas
au démarrage.

Une autre chose, c'est que peut importe ce que j'introduis comme n° de
contrat ou n° de client, la réponse qui est systématiquement renvoyée est :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Donc, cela ne tient compte ni de la date ni de ce qui a été encodé.

Je pourrais peut-être t'envoyer le fichier.

Si tu peux continuer à m'aider, ce serait vraiment super sympa pcq ça me
rendrait un grand service.

Je vais essayer de mettre ce fichier sur un serveur dès que possible pour
que tu vois exactement à quoi ressemble mon fichier.

En tout cas, merci pour tout !


Rebonjours
Comme je te l'ai précisé tu mets le code dans le VBA ThisWorKbook du classeur
Il s'éxécutera à l'ouverture de celui-ci
Outils/Macro/Visual Basic Editor
Dans la fenetre de gauche ("Projet-VBAProject) doublecliques sur ThisWorBook
Colles dans la fenètre de droite qui vient de s'ouvrir le code corrigé en
fonction de tes dernières précisions :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([H1], [H65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -7)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = c.Offset(0, -1)
Jour = c.Offset(0, -7)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([I1], [I65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -8)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = c.Offset(0, -2)
Jour = c.Offset(0, -8)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub


Je te conseille de travailler dans un premier temps avec une copie pour
t'affranchir de tout risque d'erreur

Fais moi part de tes impressions !!!


Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !










Avatar
FFO
Salut à toi
En résumé donc le code maintenant s'execute mais tu as invariablement la
même réponse à savoir :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Le souci réside certainement dans la qualité de tes paramètres colonne H (N°
de contrat)
J'ai eu le même déboire résolu de cette manière :
Essaies d'abord en selectionnant ta colonne de mettre le format texte
Si pas mieux
Selectionnes ta colonne et fait :
Données/Convertir/2 fois Suivant
Selectionnes dans Format des données en colonne l'option Texte
Puis Terminer
Manipulation à réaliser sur tous les onglets même colonne

J'espère ainsi qu'enfin celà fonctionne
Dis Moi !!!


Désolé.

Erreur de manipulation.

Donc OK pour l'exécution dès le double click mais toujours problème pour le
reste.

Merci !


Salut !

Merci bien pour cette réponse.

Je ne sais pas ce qui se passe mais le programme ne s'exécute toujours pas
au démarrage.

Une autre chose, c'est que peut importe ce que j'introduis comme n° de
contrat ou n° de client, la réponse qui est systématiquement renvoyée est :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Donc, cela ne tient compte ni de la date ni de ce qui a été encodé.

Je pourrais peut-être t'envoyer le fichier.

Si tu peux continuer à m'aider, ce serait vraiment super sympa pcq ça me
rendrait un grand service.

Je vais essayer de mettre ce fichier sur un serveur dès que possible pour
que tu vois exactement à quoi ressemble mon fichier.

En tout cas, merci pour tout !


Rebonjours
Comme je te l'ai précisé tu mets le code dans le VBA ThisWorKbook du classeur
Il s'éxécutera à l'ouverture de celui-ci
Outils/Macro/Visual Basic Editor
Dans la fenetre de gauche ("Projet-VBAProject) doublecliques sur ThisWorBook
Colles dans la fenètre de droite qui vient de s'ouvrir le code corrigé en
fonction de tes dernières précisions :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([H1], [H65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -7)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = c.Offset(0, -1)
Jour = c.Offset(0, -7)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([I1], [I65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -8)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = c.Offset(0, -2)
Jour = c.Offset(0, -8)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub


Je te conseille de travailler dans un premier temps avec une copie pour
t'affranchir de tout risque d'erreur

Fais moi part de tes impressions !!!


Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !












Avatar
JU300
Bonjour !

Ca commence à me tracasser si tu me dis que ça marche chez toi.

En effet, aucune des 2 procédures ne marche ici.

Je te mets le lien vers mon fichier, dès fois que tu y voirais plus clair.

http://users.skynet.be/fa105072/RECHERCHE2.xls

Merci pour ta patience.


Salut à toi
En résumé donc le code maintenant s'execute mais tu as invariablement la
même réponse à savoir :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Le souci réside certainement dans la qualité de tes paramètres colonne H (N°
de contrat)
J'ai eu le même déboire résolu de cette manière :
Essaies d'abord en selectionnant ta colonne de mettre le format texte
Si pas mieux
Selectionnes ta colonne et fait :
Données/Convertir/2 fois Suivant
Selectionnes dans Format des données en colonne l'option Texte
Puis Terminer
Manipulation à réaliser sur tous les onglets même colonne

J'espère ainsi qu'enfin celà fonctionne
Dis Moi !!!


Désolé.

Erreur de manipulation.

Donc OK pour l'exécution dès le double click mais toujours problème pour le
reste.

Merci !


Salut !

Merci bien pour cette réponse.

Je ne sais pas ce qui se passe mais le programme ne s'exécute toujours pas
au démarrage.

Une autre chose, c'est que peut importe ce que j'introduis comme n° de
contrat ou n° de client, la réponse qui est systématiquement renvoyée est :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Donc, cela ne tient compte ni de la date ni de ce qui a été encodé.

Je pourrais peut-être t'envoyer le fichier.

Si tu peux continuer à m'aider, ce serait vraiment super sympa pcq ça me
rendrait un grand service.

Je vais essayer de mettre ce fichier sur un serveur dès que possible pour
que tu vois exactement à quoi ressemble mon fichier.

En tout cas, merci pour tout !


Rebonjours
Comme je te l'ai précisé tu mets le code dans le VBA ThisWorKbook du classeur
Il s'éxécutera à l'ouverture de celui-ci
Outils/Macro/Visual Basic Editor
Dans la fenetre de gauche ("Projet-VBAProject) doublecliques sur ThisWorBook
Colles dans la fenètre de droite qui vient de s'ouvrir le code corrigé en
fonction de tes dernières précisions :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([H1], [H65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -7)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = c.Offset(0, -1)
Jour = c.Offset(0, -7)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([I1], [I65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -8)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = c.Offset(0, -2)
Jour = c.Offset(0, -8)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub


Je te conseille de travailler dans un premier temps avec une copie pour
t'affranchir de tout risque d'erreur

Fais moi part de tes impressions !!!


Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !














Avatar
FFO
Salut JU300
Je confirme que ton fichier au bout de ton lien marche nickel
Seule anomalie :
Le code présent est ma première version et non la seconde que j'ai du
intégrer pour réaliser l'essai

Qu'as tu comme dysfonctionnement ???

Merci de communiquer tout le détaille
Dans l'attente de te lire


Bonjour !

Ca commence à me tracasser si tu me dis que ça marche chez toi.

En effet, aucune des 2 procédures ne marche ici.

Je te mets le lien vers mon fichier, dès fois que tu y voirais plus clair.

http://users.skynet.be/fa105072/RECHERCHE2.xls

Merci pour ta patience.


Salut à toi
En résumé donc le code maintenant s'execute mais tu as invariablement la
même réponse à savoir :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Le souci réside certainement dans la qualité de tes paramètres colonne H (N°
de contrat)
J'ai eu le même déboire résolu de cette manière :
Essaies d'abord en selectionnant ta colonne de mettre le format texte
Si pas mieux
Selectionnes ta colonne et fait :
Données/Convertir/2 fois Suivant
Selectionnes dans Format des données en colonne l'option Texte
Puis Terminer
Manipulation à réaliser sur tous les onglets même colonne

J'espère ainsi qu'enfin celà fonctionne
Dis Moi !!!


Désolé.

Erreur de manipulation.

Donc OK pour l'exécution dès le double click mais toujours problème pour le
reste.

Merci !


Salut !

Merci bien pour cette réponse.

Je ne sais pas ce qui se passe mais le programme ne s'exécute toujours pas
au démarrage.

Une autre chose, c'est que peut importe ce que j'introduis comme n° de
contrat ou n° de client, la réponse qui est systématiquement renvoyée est :
"Le numéro de contrat associé au client se trouvait chez le client le
1/01/1900".

Donc, cela ne tient compte ni de la date ni de ce qui a été encodé.

Je pourrais peut-être t'envoyer le fichier.

Si tu peux continuer à m'aider, ce serait vraiment super sympa pcq ça me
rendrait un grand service.

Je vais essayer de mettre ce fichier sur un serveur dès que possible pour
que tu vois exactement à quoi ressemble mon fichier.

En tout cas, merci pour tout !


Rebonjours
Comme je te l'ai précisé tu mets le code dans le VBA ThisWorKbook du classeur
Il s'éxécutera à l'ouverture de celui-ci
Outils/Macro/Visual Basic Editor
Dans la fenetre de gauche ("Projet-VBAProject) doublecliques sur ThisWorBook
Colles dans la fenètre de droite qui vient de s'ouvrir le code corrigé en
fonction de tes dernières précisions :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([H1], [H65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -7)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = c.Offset(0, -1)
Jour = c.Offset(0, -7)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([I1], [I65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -8)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = c.Offset(0, -2)
Jour = c.Offset(0, -8)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub


Je te conseille de travailler dans un premier temps avec une copie pour
t'affranchir de tout risque d'erreur

Fais moi part de tes impressions !!!


Salut !

Tout d'abord, merci pour ton travail, c'est vraiment super sympa de ta part.

J'énumère mes remarques pour qu'on s'y retrouve :

1.) J'ai oublié de demander que le programme s'exécute directement au
lancement du fichier.

2.) Quelques changements à faire, ça doit être simple mais je n'ose pas
toucher au fichier tant que je ne comprends pas tout, c'est trop beau comme
ça ;-) : Date = A ou B (date d'entrée & date de traitement), Contrat = H,
Client = I, Gestionnaire = G car Onglet = nom du groupe d'utilisateurs)

3.) J'aimerais que si l'on choisit Encoder, on se retrouve dans une feuille,
et pas qu'on retourne dans le code.


Voilà, j'espère que je n'ai rien oublié cette fois.

Grand merci pour ton aide !


Salut à toi
Consdérant les informations suivantes à récupérer :
N° du contrat colonne B (Format texte impérativement)
Client colonne C (Format texte impérativement)
Utilisateur nom de l'onglet
Date colonne A
A mettre dans ThisWorbook :

Private Sub Workbook_Open()
If MsgBox("Voulez vous Encoder ???", vbYesNo, "Encodage") = vbYes Then
Exit Sub
Else
If MsgBox("Voulez vous une Recherche par le N° de contrat ???", vbYesNo,
"Recherche") = vbYes Then
n° = InputBox("Saisissez le numéro", "Numéro")
If n° = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([B1], [B65535].End(xlUp))
If c = n° Then
If CDate(c.Offset(0, -1)) > CDate(Jour) Then
Numéro = c
Client = c.Offset(0, 1)
Nom = Sheets(I).Name
Jour = c.Offset(0, -1)
End If
End If
Next
Next
End If
Else
Clt = InputBox("Saisissez le Nom du client", "Client")
If Clt = "" Then
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
Jour = CDate("01/01/1900")
For I = 1 To Sheets.Count
Sheets(I).Select
For Each c In Worksheets(I).Range([C1], [C65535].End(xlUp))
If c = Clt Then
If CDate(c.Offset(0, -2)) > CDate(Jour) Then
Numéro = c.Offset(0, -1)
Client = c
Nom = Sheets(I).Name
Jour = c.Offset(0, -2)
End If
End If
Next
Next
End If
End If
End If
If Jour = "01/01/1900" Then
MsgBox ("Demande introuvable")
ActiveWorkbook.Close SaveChanges:úlse
Application.Quit
Exit Sub
Else
MsgBox ("Le Numéro de contrat" & " " & Numéro & " " & "associé au client" &
" " & Client & " " & "se trouvait chez l'utilisateur" & " " & Nom & " " &
"le" & " " & Jour)
End If
End Sub

Les configurations suivantes sont traitées comme suit :
Encoder le classeur reste ouvert
Recherche par N° de contrat : Boîte de dialogue donnant le résultat attendu
Recherche par Nom : Boîte de dialogue donnant le résultat attendu

Les situations anormales décrites ci-aprés ferme le ficher :

Aucune saisie en Recherche
Saisie inexistante (message "Introuvable")

Ces dispositions peuvent être modifiées

Testes le code comme décrit et donnes moi les corrections à apporter
La recherche par nom impose de l'écrire dans la boîte de dialogue telque
saisi Dans le fichier
Je peux m'affranchir des majuscules/Minuscules et même donner la possibilité
d'une recherche sur une partie du nom (Commence/contient/fini)
A toi de me dire

Dans l'attente de te lire


Bonjour !

J'ai un fichier Excel comprenant 3 feuilles.

3 groupes d'utilisateurs encodent des données, chacun dans sa feuille. Les
données sont d'une part un nom d'utilisateur, une date de traitement du
contrat, un n° de contrat à 5 chiffres et un nom de client.

Je souhaiterais qu'à l'ouverture de ce fichier Excel, une boîte de dialogue
s'ouvre et propose 2 choix, soit "Encoder", soit "Rechercher".

Si l'on clique sur "Encoder", il ne se passe rien, l'utilisateur peut
encoder ses données dans une des feuilles du classeur.

Par contre, si on choisit "Rechercher", l'utilisateur est invité dans une
seconde boîte de dialogue à encoder soit un n° de contrat, soit un nom de
client, soit les deux.

Le résultat renvoyé est du style : "Le n° de contrat ... associé au client
... se trouvait chez l'utilisateur ... le ...".

La date doit être la date la plus récente correspondant aux données entrées.

Donc, si 2 lignes existent pour le contrat C du client X, seule la ligne la
date la plus récente est renvoyée comme résultat.

Merci de m'aider !
















Avatar
Nekfra
Version 2003 d'excel


Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "La valeur a changé"
End Sub

Quand je modifie ensuite le contenu d'une cellule, il ne se passe rien,
me message ne s'affiche pas.
Avatar
tissot.emmanuel
Bonjour,

Execute ceci et refais un test.

Sub Test()
Application.EnableEvents = True
End Sub

Cordialement,

Manu/

"Nekfra" a écrit dans le message de news:
e$
Version 2003 d'excel


Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "La valeur a changé"
End Sub

Quand je modifie ensuite le contenu d'une cellule, il ne se passe rien,
me message ne s'affiche pas.
1 2