Recherche d'une valeur avec liste

  • Initiateur de la discussion Crazyo
  • Date de début
C

Crazyo

Guest
Bonjour,

Je vous explique mon cas: je travaille dans une petite société, et nous avons depuis peu un petit réseau de 5 ordinateurs qui nous servait uniquement pour les impressions. Mais depuis peu, j'ai mis en place un fichier excel ayant pour but de remplacer notre cahier des appels téléphoniques, avec 50 à 70 appels par jour, il grossit pas trop.

Chaque page du fichier correspond à un jour (ex: SAM 24 AVR), et chaque jour comporte tout simplement 6 colonnes:
- Interlocuteur
- Heure
- Date
- Destinataire
- Objet
- Numéro à rappeler

Le tout est largement suffisant, mais une limite est venue de nos utilisateurs un peu agés qui éprouvent les pires difficultées à retrouver des contacts. Faire l'action suivante leur est impossible (dans la mesure où ils peinent déjà dans l'utilisation des tris autos):
- [Edition]
- [rechercher]
- [options]
- [classeur]
- [rechercher tout]
Ensuite, apparait la liste où on peut repérer le bon contact suivant le jour souhaité.

Comment puis-je faire pour simplifier au maximum cette manipulation pour arriver à cette même liste au final? Faire un bouton, je sais faire, lui greffer une macro, je sais aussi, mais faire une macro capable d'effectuer une recherche en fonction d'un nom, et d'afficher le résultat avec une liste claire, j'ai pas la moindre idée de la méthode à adopter. Je vous remercie par avance...
 

Pièces jointes

  • cahierdesappelstest.zip
    8.4 KB · Affichages: 16
B

Bernard

Guest
Bonjour Crazyo

Pour ne pas compliquer les recherches, il y a la grille de saisie automatique, obtenue par données/Formulaire, qui permet de réaliser des recherches avec la commande Critère selon les différents champs de la base de données.

Cordialement

Bernard
 
C

Crazyo

Guest
Merci pour la réponse tout d'abord! ;-))

Je ne connaissais pas "données/Formulaire", par contre ça ne me cherche pas les contacts sur tout le classeur, à moins que j'utilise mal les critères... Comment faire au cas où?
 
B

Bernard

Guest
Bonjour Crazyo

Lorsque tu utilises la commande Critère pour effectuer une recherche, une fois le critère saisi, comme pour la saisie d'un nouvel enregistrement, il faut faire Entrée pour finir le processus.

En cas de difficultés, il y a également une aide incorporée qui donne pas mal d'informations utiles.

Cordialement

Bernard
 
L

Lord Nelson

Guest
Salut,

Voici une suggestion :

Supposons que tu disposes d'un TextBox pour entrer le nom recherché et un bouton "OK" pour lancer la recherche.

Private Sub CommandButton1_Click()
Dim WS As Worksheet
Dim CL As Range
Dim Num As Integer
Num = 8
'Nettoyage de la plage où afficher les résultats (par exemple B8 à C20)
Range("B8:C20").Clear
'Si le TextBox est vide, il ne se passe rien
If TextBox1.Text <> "" Then
'Parcourons les différentes feuilles du classeur
For Each WS In Worksheets
'Parcourons les cellules de la plage de recherche (par exemple de A1 à A20)
For Each CL In WS.Range("A1:A20")
'Si la valeur recherchée est trouvée, on l'affiche dans la plage résultats
'ainsi que la(es) cellule(s) voisine(s)
If InStr(CL.Value, TextBox1.Text) > 0 Then
Range("B" & CStr(Num)).Value = CL.Value
Range("C" & CStr(Num)).Value = CL.Offset(0, 1).Value
Num = Num + 1
End If
Next CL
Next WS
End If
End Sub

Qu'en dis-tu ?

A+
LN
 
@

@+Thierry

Guest
Bonsoir Bernard, Crazyo, Amiral !, le Forum

Très interressant cette ligne :
If InStr(UCase(CL.Value), UCase(TextBox1.Text)) > 0 Then

C'est super, je n'avais jamais pensé à ceci et je persistais à n'utiliser que la méthode Find pour trouver les occurrences sur une String partielle.

Merci et bonne soirée
@+Thierry
 
B

Bernard

Guest
Bonsoir le forum


Oui Pat, très interressant.

J'avoue que je me suis essayé à ce dossier et je me suis cassé les dents dessus !

If InStr(UCase(CL.Value), UCase(TextBox1.Text)) > 0 Then
CL.EntireRow.Range("A1", "G1").Copy
Range("A" & CStr(Num)).EntireRow.Range("A1", "G1").PasteSpecial xlValue
Application.CutCopyMode = False
Range("G" & CStr(Num)).Value = WS.Name
Num = Num + 1
End If

J'ai simplement modifier un peu la copie des diverses données. J'aime bien les propriétés EntireRow ou EntireColumn.


Bernard ;o)
 
Q

Quentin

Guest
Recherche d'un num de tél puis liste

Salut, dans le fichier en pièce jointe, je voudrais lister tous les appels vers un num de tél qui est dans les pages concernant les mois et avoir toutes les lignes d'appels dans la 1ère feuille. merci d'avance
 

Pièces jointes

  • TraitementFactureOrange.zip
    19.9 KB · Affichages: 19
C

Celeda

Guest
Bonour,

Bon c'est bien ce que je te disais Quentin, on peut se servir de ce qu'a fait Lord Nelson pour ton fichier sauf que.....


- j'ai triché pour essayer de m'en sortir - j"ai transformé tes numéros de téléphone en format texte à cause de cette ligne ;

If TextBox1.Text

je ne sais pas comment dire à une textbox de lire un numéro de téléphone,

et hop la boite Recherche fonctionne impec.

Je n'ose déposer le fichier puisque j'ai fait une adaptation libre à la Celeda, mais si LN ou quelqu'un d'autre peut corriger le If TextBox1.Text en
If TexTbox1. ????, le tour est joué, on ne réinvente pas la roue. On garde la même procédure et on adapte sur ton fichier. Enfin si cela est possible ? !

Celeda
 
L

Lord Nelson

Guest
Bonsoir Celeda, Quentin et tout le monde,

En fait, je n'ai pas utilisé de TextBox mais l'évènement "Change" sur la cellule B21 où l'utilisateur est invité à entrer un Numéro de téléphone.

Sinon, le principe est le même : Deux boucles For Each imbriquées et le tour est joué !

Maintenant dodo.
Amitiés
LN
 

Pièces jointes

  • TraitementFactureOrange_LN.zip
    24.6 KB · Affichages: 40

Discussions similaires

Réponses
1
Affichages
124
Compte Supprimé 979
C
Réponses
1
Affichages
444