Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Appel macro sous condition

  • Initiateur de la discussion Initiateur de la discussion Lone-wolf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lone-wolf

XLDnaute Barbatruc
Bonsoir le Forum,

je n'arrive pas à trouver où insérer dans le code suivant cette syntaxe:

If [H5] = "" Then Call efface

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, lig%
On Error Resume Next
If [E5] = "" Then [H5, D9:D13, F9] = "": Exit Sub
If Intersect(Target, [E5]) Is Nothing Then: [H5].Select

If [H5] <> "" Then
[E5].Select
lig = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
If lig < 2 Then Exit Sub
With Sheets(2).Range("a2:a" & lig)
 Set cel = .Find(Range("E5"), LookIn:=xlValues, lookat:=xlWhole)
If Not cel Is Nothing Then
 [D9].Value = cel.Offset(0, 0).Value
 [D10].Value = cel.Offset(0, 1).Value
 [D11].Value = cel.Offset(0, 2).Value & " " & cel.Offset(0, 3).Value
 [D13].Value = cel.Offset(0, 4).Value
Else
[F9].Value = "Pas de résultat pour " & [E5].Value & " à " & [H5].Value
    End If
End With
End If
End Sub


A+ 😎
 
Dernière édition:
Re : Appel macro sous codition

Bonsoir Lone-wolf,

A mon avis, tu peux essayer ceci :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim cel As Range, lig%
    On Error Resume Next
    If [E5] = "" Then [H5, D9:D13, F9] = "": Exit Sub
    If Intersect(Target, [E5]) Is Nothing Then: [H5].Select
    If [H5] <> "" Then
        [E5].Select
        lig = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
        If lig < 2 Then Exit Sub
        With Sheets(2).Range("a2:a" & lig)
            Set cel = .Find(Range("E5"), LookIn:=xlValues, lookat:=xlWhole)
            If Not cel Is Nothing Then
                [D9].Value = c.Offset(0, 0).Value
                [D10].Value = c.Offset(0, 1).Value
                [D11].Value = c.Offset(0, 2).Value & " " & c.Offset(0, 3).Value
                [D13].Value = c.Offset(0, 4).Value
            Else
                [F9].Value = "Pas de résultat pour " & [E5].Value & " à " & [H5].Value
            End If
        End With
    Else
        Call Efface
    End If
End Sub

A+
 
Re : Appel macro sous codition

Re-bonsoir,

Au début de ta macro, tu écris :
VB:
If [E5] = "" Then [H5, D9:D13, F9] = "": Exit Sub

Donc, si tu veux faire le test avant cette ligne, la macro devient :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim cel As Range, lig%
    On Error Resume Next
    If [H5] = "" Then Call Efface
    If [E5] = "" Then [H5, D9:D13, F9] = "": Exit Sub
    If Intersect(Target, [E5]) Is Nothing Then: [H5].Select
    If [H5] <> "" Then
        [E5].Select
        lig = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
        If lig < 2 Then Exit Sub
        With Sheets(2).Range("a2:a" & lig)
            Set cel = .Find(Range("E5"), LookIn:=xlValues, lookat:=xlWhole)
            If Not cel Is Nothing Then
                [D9].Value = c.Offset(0, 0).Value
                [D10].Value = c.Offset(0, 1).Value
                [D11].Value = c.Offset(0, 2).Value & " " & c.Offset(0, 3).Value
                [D13].Value = c.Offset(0, 4).Value
            Else
                [F9].Value = "Pas de résultat pour " & [E5].Value & " à " & [H5].Value
            End If
        End With
    End If
End Sub

Si cela ne fonctionne pas, je ne pense pas pouvoir mieux t'aider sans plus d'explication ou un fichier exemple.

A+
 
Re : Appel macro sous codition

Re,

désolé pour le petit retard, j'ai du éffacer les données et écrire des noms fictifs.

Voici le fichier.

L'action à exécuter est: après la première recherche, éffacer les données en tapant sur Enter.


A+ 😎
 

Pièces jointes

Re : [Résolu] Appel macro sous codition

Bonsoir à tous

Puisque tu as pris le soin d’anonymiser ton fichier, ne devrais-tu pas aussi ne pas utiliser de logo sous copyright ?
(Ce qui n'enlèverai rien au fonctionnement de ton appli)

PS: Sinon une suggestion en passant pour ton code VBA
Code:
Sub efface()
Dim arr$, wb As Object
With Feuil1
If .[D10, D11] = "" Then
arr = .[D10]  & " " & .[D11]
Set wb = .WebBrowser1
End With
wb.Navigate "http://maps.google.fr/maps?q=" & arr
End If
End Sub
 
Dernière édition:
Re : [Résolu] Appel macro sous codition

Salut Staple,

Beaucoup de maisons paie pour qu'on leur fasse de la pub. Mais si sa peut te rassurer, tous fichiers fait ici ou ailleurs, n'outrepassent pas la porte de mon appart avec ou sans la pub; ça m’étonnerais beaucoup que Microsoft et compagnie me mettent en tôle parce que j'ai mis deux de leurs logos sur un fichier; ils y en a qui font pire, mais beaucoup plus pire que ça; et tu as beaucoup de chance, moi je pourrais tout aussi bien les mettre sur ma voiture ou sur le toit de l'immeuble.

Si ça peut te rendre service tu peux aussi me dénoncer. 😉

A+ : cool:
 
Dernière édition:
Re : [Résolu] Appel macro sous codition

Re Staple,

et bien, moi j'avait fait comme ceci:

Code:
Private Function efface()
Set wb = Feuil1.WebBrowser1
wb.Navigate "http://maps.google.fr/maps?q=" & arr
End Function

Dans tout les cas, je te remercie pour ta proposition.


A+ 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
729
Réponses
7
Affichages
173
Réponses
5
Affichages
906
Réponses
9
Affichages
506
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…