Clic Cellule impliquant une Recherche

Booby

XLDnaute Nouveau
Bonjour,
mon problème est le suivant
J'ai 2 onglets.

Un onglet Calendrier, un onglet Carnet d'adresse.

Mon but est que lorsque je clique sur un nom qui est répertorié dans le calendrier, je suis directement renvoyé sur la ligne du contact dans mon carnet d'adresse afin d'avoir mes informations

Si je clique sur une autre case ou si le nom n'est pas dans le carnet d'adresse, je souhaite avoir un message d'erreur en disant que la recherche ne donne rien et rester sur mon onglet calendrier

Je débute complétement en VBA

Pouvez vous m'aider ?

Merci bcp !!!
 

Pièces jointes

  • Copie de Tableau.xlsx
    22.3 KB · Affichages: 53
  • Copie de Tableau.xlsx
    22.3 KB · Affichages: 70
  • Copie de Tableau.xlsx
    22.3 KB · Affichages: 60

Fred0o

XLDnaute Barbatruc
Re : Clic Cellule impliquant une Recherche

Bonsoir Booby,

Voici un code à mettre dans le code de la feuille "Agenda". Pour cela, sélectionner la feuille "Agenda" puis click-droit sur le nom de la feuille. Choisir "Visualiser le code". Là, coller le code ci-dessous.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim CeKi, OuKilé, i, OK
    OK = False
    If Target(1) = "" Then
        MsgBox "Il n'y a rien à rechercher..."
    Else
        CeKi = Right(Target(1), Len(Target(1).Value) - InStr(1, Target(1), "-") - 1)
        Sheets("Carnet").Select
        Set OuKilé = Sheets("Carnet").Cells.Find(CeKi, LookIn:=xlValues)
        For i = 2 To Sheets("Carnet").[B65536].End(xlUp).Row
            If Sheets("Carnet").Cells(i, 2) = CeKi Then
                Sheets("Carnet").Cells(i, 2).Select
                OK = True
                Exit For
            End If
        Next
        If Not OK Then
            MsgBox "La recherche aboutit à un vide intersidéral..."
            Sheets("Agenda").Select
        End If
    End If
End Sub

A+

Edit : Hello Hasco.
 
Dernière édition:

Booby

XLDnaute Nouveau
Re : Clic Cellule impliquant une Recherche

Merci beaucoup à tous les 2 -

Supposons que je veux rajouter une information dans mon calendrier
exemple : F1L31 - DEBIAK Yann - Orange

Qu'est ce que je dois rajouter dans la ligne de code:

pour Hasco:
' si la chaine de caractères " - " est dans le texte alors ne garder que ce qu'il y a à droite
If InStr(1, t, " - ") > 0 Then t = Right(t, Len(t) - InStr(1, t, " - ") - 2)

ou pour Fredoo:

MonContact = Right(Target(1), Len(Target(1).Value) - InStr(1, Target(1), "-") - 1)



Merci à vous 2
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Clic Cellule impliquant une Recherche

Bonsoir le fil, bonsoir le forum,

Comme j'ai planché aussi sur ton problème voici ma proposition même si je doute qu'elle soit meilleure que celle de Fred0o ou Hasco :
Le code :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim n As String 'déclare la variable n (Nom)
Dim r As Range 'déclare la variable r (Recherche)

'si le double-clic a lieu ailleurs que dans la plage B2:E32, sort de la procédure
If Application.Intersect(Target, Range("B2:E32")) Is Nothing Then Exit Sub
Cancel = True 'évite le mode édition lié au double-clic
n = Target(1)
If n = "" Then 'si n'est pas vide
    Exit Sub 'sort de la procédure
Else 'sinon
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    n = Split(n, " - ", -1)(1) 'supprime le texte superflu avant le nom (génère une erreur si " - " n'existe pas)
    If Err <> 0 Then Err.Clear 'si une erreur a été générée, supprime l'erreur
    On Error GoTo 0 'annule la gestion des erreurs
End If 'fin de la condition
With Sheets("Carnet") 'prend en compte l'onglet "Carnet"
    Set r = .Columns(2).Find(n, , xlValues, xlPart) 'définit la recherche
    If Not r Is Nothing Then 'condition : si il existe au moins une occurrence
        .Activate 'active l'onglet
        r.Select 'sélectionne r
    Else 'sinon (si il n'y a pas d'occurrence)
        MsgBox "Contact non trouvé dans le carnet d'adresse !" 'message
    End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "Carnet"
End Sub
Le fichier :
 

Pièces jointes

  • Booby_v01.xls
    106.5 KB · Affichages: 70

Booby

XLDnaute Nouveau
Re : Clic Cellule impliquant une Recherche

Merci Robert, j'ai la même question que précédemment, si je peux rajouter quelques chose après le prénom en supposant que je mets également un tiret, que dois je rajouter ?

de F1L1 - Nicolas DURAND - Bleu je veux obtenir Nicolas DURAND

n = Split(n, " - ", -1)(1) 'supprime le texte superflu avant le nom (génère une erreur si " - " n'existe pas)

Merci
 
G

Guest

Guest
Re : Clic Cellule impliquant une Recherche

Bonsoir,

Si le nom est toujours le 2[SUP]ème[/SUP] éléments d'une chaine composée d'élément séparés par " - ", s'il n'y a pas de " - " prend le texte de la cellule en entier.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Target(1,1)= première cellule de la sélection (à cause des cellules fusionnées)
'Si target(1,1) est dans la plage B2:E32 et que Target(1,1) n'est pas vide
If Not Intersect(Target(1, 1), Range("B2:E32")) Is Nothing And Not IsEmpty(Target(1, 1)) Then
    
    Dim c As Range, t
    t = Split(Target(1, 1), " - ")
    If UBound(t) > 0 Then t = t(1) Else t = t(0)
    
    ' rechercher dans le carnet en colonne B
    Set c = Sheets("Carnet").Range("B:B").Find(What:=t, _
                    After:=Sheets("Carnet").Range("B1"), _
                    LookIn:=xlValues, _
                    LookAt:=xlPart, _
                    SearchOrder:=xlByRows, _
                    MatchCase:=False)
    
    'Si on a trouvé une occurence
    If Not c Is Nothing Then
        Application.Goto c, True
    Else 'sinon
        MsgBox t & " non trouvé dans le carnet", vbInformation, "Recherche carnet d'adresses"
    End If
End If
End Sub

A+
 
Dernière modification par un modérateur:

Booby

XLDnaute Nouveau
Re : Clic Cellule impliquant une Recherche

J'aime beaucoup cette idée du double clic merci beaucoup

Merci Robert, j'ai la même question que précédemment, si je peux rajouter quelques chose après le prénom en supposant que je mets également un tiret, que dois je rajouter ?

de F1L1 - Nicolas DURAND - Bleu je veux obtenir Nicolas DURAND

n = Split(n, " - ", -1)(1) 'supprime le texte superflu avant le nom (génère une erreur si " - " n'existe pas)

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Clic Cellule impliquant une Recherche

Bonsoir le fil, bonsoir le forum,

le code que je t'ai proposé fonctionne même si tu rajoutes du texte à condition que ce soit après " - " (espace, tiret, espace)...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb