Excel faire une fenetre lors selection cellule

Bergeal Bergeal
433 contributions
Membre depuis le 20/02/2003
Envoyé le 20/06/2007 à 08:53


Bonjour

j\'ai crée un base de donnee telephonique avec excel

colonne a civilite b nom c prenom ect...
dans cette base j\'ai un module recherche par le nom et qui m\'affiche les ligne demandee
Mais comme j\'ai beaucoup d\'info j\'ai du mal a voir les numero de fax tel portable .
Peut on une fois que j\'ai rechercher le nom (donc une ligne aparit avec un dizaine d\'infos) est qu il est affiche avoir ceci

je clique sur le nom dans un ligne et un fenetre apparai en plus gros avec juste le numero de tel fax et portable

Merci à vous

jean michel

Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 20/06/2007 à 09:48


Oui c\'est tout à fait possible en créant un userform.
J\'essaie de te préparer quelque chose et je te le mets à disposition.
Patience

Pégase
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Bergeal Bergeal
433 contributions
Membre depuis le 20/02/2003
Envoyé le 20/06/2007 à 10:50


bonjour

merci pour votre aide

jean michel

Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 20/06/2007 à 19:08 Modifié par Modifié par Pegase le 20/06/20


Bon rapidement je t'ai fais une petite macro que tu pourras adapter

En A > Nom
En B > Prénom
En C > Adresse complète
En D > N° de téléphone
En E > N° de fax

Puis appuis simultanément sur les touches Alt et F11
Dans la feuille Microsoft Visual Basic qui s'ouvre tu ouvre la feuille où se trouve ton tableau d'adresse et tu y colles le code suivant (Fais un copier/coller)
Voir copie d'écran ci dessous


Et voici le code


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim KeyCells As Range
Dim Lg As Integer, Cl As Integer

Lg = ActiveCell.Row 'N° de ligne
Cl = ActiveCell.Column 'N° de colonne
If Target.Address = "$A$1" Then Exit Sub 'Elimine le traitement de la cellule A1 >>Prix
If Cl <> 1 Then Exit Sub 'Elimine le traitement des colonnes autres que 1

Set KeyCells = Cells(Lg - 1, 1)
If Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Nom = Cells(Lg, 1)
Prénom = Cells(Lg, 2)
Tel = Cells(Lg, 4)
Fax = Cells(Lg, 5)
Texte = "Nom : " & Nom & " " & Prénom & vbCr & vbCr
Texte = Texte & "Tél. : " & Tel & vbCr
Texte = Texte & "Fax : " & Fax
Continue = MsgBox(Texte, vbOKOnly, "Téléphone & fax")
End If
Range("A1").Select
End Sub


Un double clic dans la cellule du nom va provoquer l'affichage des infos

Si tu veux plus complet, je peux te préparer un fichier qui permettra :
- la recherche du Nom avec liste déroulante automatique et saisie semi-automatique
- Dès que la recherche sera lancée, dans la même fenêtre s'affichera toutes les données (Nom, Prénom, Adresse Tel Fax...)

Mais c'est un peu plus long à écrire et il faudrait que tu m'envoies un fichier vierge pour l'adapter

Tiens moi au courant
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Bergeal Bergeal
433 contributions
Membre depuis le 20/02/2003
Envoyé le 21/06/2007 à 09:57


Bonjour

je viens d\'essayer le code

j\'ai fait quelques modif mais je n\'arrive pas à modifier 2 points :

le nom est dans colonne 2 et non 1

et lorsque s\'affiche la combo je voudrais que tout le numero s\'affiche y compris le 0 devant (si c\'est possible )et les numero soit espacé 06 espace 06 espace ...


merci pour votre aide

jean michel


Bergeal Bergeal
433 contributions
Membre depuis le 20/02/2003
Envoyé le 21/06/2007 à 10:24


Re bonjour voici une capture de ma base


[i][/i]

merci

Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 21/06/2007 à 19:14


le nom est dans colonne 2 et non 1

C'est assez simple, dans mon code il y a la ligne

Nom = Cells(Lg, 1)

Lg représente le numéro de la ligne dans laquelle tu as double clique et le 1 qui suit est le n° de colonne : La fonction est Cells(n° de ligne,n° de colonne)
Dans ton cas il suffit d'écrire

Nom = Cells(Lg, 2)



Pour l'affichage des n° de téléphone, il y a plusieurs solutions :
1) Tu déclares ta colonne en Format texte et tu tapes tes numéros comme tu veux 01 23 45 67 89 avec les espaces au bon endroit. Dans ce cas le combo te restituera exactement ton format

2) tu tapes tes n° sans espaces et tu déclares ta colonnes en format Spécial puis N° de téléphone


Ensuite dans la macro tu remplaces

Tel = Cells(Lg, 4)


par

Tel1 = Cells(Lg, 4)
Tel = "0" & Mid(Tel1, 1, 1) & " " & Mid(Tel1, 2, 2) & " " & Mid(Tel1, 4, 2) & " " & Mid(Tel1, 6, 2) & " " & Mid(Tel1, 8, 2)


Idem pour le fax

Bonne chance et si tu as encore besoin n'hésite pas
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Pegase Pegase
1 023 contributions
Membre depuis le 07/02/2002
Envoyé le 22/06/2007 à 00:14 Modifié par Modifié par Pegase le 22/06/20


Je viens de modifier le code pour l\'adapter \"exactement\" à ce que l\'on arrive à lire sur ta copie d\'écran, car il y avait des petites choses à améliorer.

Pour déclencher l\'affichage, il suffit de double-cliquer sur n\'importe quelle cellule de la ligne du nom choisi (et plus exclusivement sur la cellule du nom)
Si un n° (fax ou portable) n\'est pas mémorisé le champ est vide au lieu d\'affiche 0 dans les modifs précédente
J\'ai ajouté le n° de portable

Quand tu vas recopier la macro tous ce qui est après le signe apostrophe \' va passer en vert, se sont des commentaires
Je les ai ajouté pour que tu comprenne les fonctions

Voici le code

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim KeyCells As Range
Dim Lg As Integer, Cl As Integer

Lg = ActiveCell.Row \'N° de ligne
Cl = ActiveCell.Column \'N° de colonne
If Lg = 1 Then Exit Sub \'Elimine le traitement de la ligne 1

Set KeyCells = Cells(Lg - 1, 2)
If Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Nom = Cells(Lg, 2)
Prénom = Cells(Lg, 3)
\'Traitement n° de téléphone
\'Lecture du n° de téléphone
Tel1 = Cells(Lg, 8)
If Tel1 = \"\" Then GoTo Suite1
\'Mise au format 06 ss xx yy zz du n° de téléphone
Tel = \"0\" & Mid(Tel1, 1, 1) & \" \" & Mid(Tel1, 2, 2) & \" \" & Mid(Tel1, 4, 2) & \" \" & Mid(Tel1, 6, 2) & \" \" & Mid(Tel1, 8, 2)

Suite1:
\'Traitement n° de Fax
Fax1 = Cells(Lg, 9)
If Fax1 = \"\" Then GoTo Suite2
Fax = \"0\" & Mid(Fax1, 1, 1) & \" \" & Mid(Fax1, 2, 2) & \" \" & Mid(Fax1, 4, 2) & \" \" & Mid(Fax1, 6, 2) & \" \" & Mid(Fax1, 8, 2)

Suite2:
\'Traitement n° de portable
Port1 = Cells(Lg, 10)
If Port1 = \"\" Then GoTo Suite3
Port = \"0\" & Mid(Port1, 1, 1) & \" \" & Mid(Port1, 2, 2) & \" \" & Mid(Port1, 4, 2) & \" \" & Mid(Port1, 6, 2) & \" \" & Mid(Port1, 8, 2)

Suite3:
\'Préparation du message
Texte = \"Nom : \" & Nom & \" \" & Prénom & vbCr & vbCr
Texte = Texte & \"Tél. : \" & Tel & vbCr
Texte = Texte & \"Fax : \" & Fax & vbCr
Texte = Texte & \"Port : \" & Port

\'Affichage du message
Continue = MsgBox(Texte, vbOKOnly, \"Téléphone & fax\")
End If

\'Positionnement de la cellule sélectionée en A1
Range(\"A1\").Select
End Sub



ATTENTION :
Les lignes doivent être écrites sur une seule ligne
Exemple
Ecrire
Fax = \"0\" & Mid(Fax1, 1, 1) & \" \" & Mid(Fax1, 2, 2) & \" \" & Mid(Fax1, 4, 2) & \" \" & Mid(Fax1, 6, 2) & \" \" & Mid(Fax1, 8, 2)

et non
Fax = \"0\" & Mid(Fax1, 1, 1) & \" \" & Mid(Fax1, 2, 2) & \" \" & Mid(Fax1, 4, 2) & \" \" & Mid(Fax1, 6, 2) & \" \" & Mid(Fax1, 8,
2)


Bon courage
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Bergeal Bergeal
433 contributions
Membre depuis le 20/02/2003
Envoyé le 22/06/2007 à 09:38


Bonjour Pegase

merci pour le nouveau code

avec tes indications d\'hier j\'avais modife et rajouter le n° de portable

mais j\' n\'avais pas reussi à modifier la selection de la colonne

le nouveau code fonctionne tres bien est c\'est exactement ce que je cherchais

merci pour l\'aide precieuse

jean michel



Discussion trop ancienne

Cette discussion a été automatiquement fermée car elle n'a plus reçue de nouveau message depuis trop longtemps.

Nous vous suggérons de créer un nouveau message

« Retour sur la liste des messages de ce forum