XL 2010 Résolu par Roland et SI : code recherche + format n° tel

arthour973

XLDnaute Barbatruc
Re-Bonjour,

Je comprends qu'il serait bien d'avoir un fichier test mais je n'arrive pas à reproduire les beugs en fichier test (je vais continuer d'essayer).

En attendant, je vais tenter de faire plus simple.
Excel a une recherche automatique mais j'ai besoin d'un accès direct.

Pour cela, j'ai fait la macro suivante (avec l'enregistreur excel) qui recherche dans toutes les feuilles.
Code:
Sub trouveEtVa()
Application.EnableEvents = False
Application.ScreenUpdating = False
    Cells.Find(What:="33695842338", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Mon souci est que je n'arrive pas à faire en sorte que la boite de dialogue s'ouvre en me laissant le champ de saisie libre.
dans le cas présent, la recherche s'ouvre avec : 33695842338

Si vous pouvez me dire comment modifier, j'abandonne la recherche précédente car trop compliquée pour ma petite tête LOL,
Avec mes remerciements,
 
Dernière édition:

Si...

XLDnaute Barbatruc
salut
Merci DoubleZero d'être encore là.
Maintenant, il bloque plus loin LOL et Grrrrrrrrrrrrrrr :confused::eek::oops:
Comme te l'a dit ;):D, Option Explicit t'oblige à déclarer toutes les variables !
Une variation sur ce thème ...
VB:
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet, Quoi, C As Range, T As String 'obligatoire avec Option Explicit
  Quoi = InputBox("Donnée à rechercher", "Recherche de ...")
  T = "Pas"
  If Quoi = "" Then Exit Sub
  For Each Sh In Worksheets
    Set C = Sh.Cells.Find(Quoi, LookAt:=1, MatchCase:=1)  'voir aide pour la casse
    If Not C Is Nothing Then
      Sh.Activate: C.Select                                                         'pour voir
      If MsgBox("trouvé en " & Sh.Name & "." & vbLf & _
          "Recherche du suivant ?", 4, "Recherche de " & Quoi) = 7 Then
          MsgBox "Recherche arrêtée !", , "Oups": Exit Sub
      End If
      T = "Plus "
    End If
  Next
  If T = "Pas" Then
    MsgBox "Recherche infructueuse !", , "Oups"
  Else
    MsgBox "Recherche terminéee !", , "Eh oui..."
  End If
End Sub
 

Fichiers joints

arthour973

XLDnaute Barbatruc
Bonsoir Si,
Bonsoir à toutes et à tous,
Merci de m'avoir répondu ...... et c'est la solution.
Je dois approfondir les variables car à ce jour, je ne comprends pas trop.
Ton code marche nikel et j'ai pu l'intégrer dans mon classeur.

Un grand merci et un Grand merci à DoubleZero qui m'a tant aidé à comprendre et à avancer.
Je ne renonce pas, je continuerai à chercher pour faire marcher l'autre macro.

Merci à vous tous d'être là et rapides et efficaces.
Bonne fin de journée,
Amicalement,
Lionel,
 

arthour973

XLDnaute Barbatruc
Bonjour DoubleZero,
Bonjour SI,
Bonjour Hervé62,
Bonjour à toutes et à tous,

Je reviens sur le code de SI qui fonctionne parfaitement.

J'ai une dernière question sur ce sujet (enfin, je pense LOL) :
Nous avons des formatages de saisie quand il s'agit de numéros de téléphone (j'ai un code qui fonctionne super fait par Hervé62 que je remercie encore au passage).

Est-il possible, si c'est un NUMERO à rechercher, qu'il soit automatiquement FORMATE en le collant dans la recherche ?

Je joins le classeur test dans lequel j'ai inclus la feuille Téléphone.
Avec mes remerciements,
Je vous souhaite à toutes et à tous un très bon dimanche,
Amicalement,
Lionel,
 

Fichiers joints

arthour973

XLDnaute Barbatruc
Bonjour à toutes et à tous,

je relance ....... une solution à mon souci ?
Avec mes remerciements,
Amicalement,
Lionel,
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
bonjour à tous,

ta solution:
après ceci > If Quoi = "" Then Exit Sub
Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##")
 

arthour973

XLDnaute Barbatruc
Bonsoir Roland,
J'ai essayé mais je n'ai pas du le faire comme il faut car ça ne marche pas.

Code:
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet, Quoi, C As Range, T As String 'obligatoire avec Option Explicit
  Quoi = InputBox("Donnée à rechercher", "Recherche de ...")
  T = "Pas"
  If Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##") Then Exit Sub
  For Each Sh In Worksheets
    Set C = Sh.Cells.Find(Quoi, LookAt:=1, MatchCase:=1)  'voir aide pour la casse
    If Not C Is Nothing Then
      Sh.Activate: C.Select
      If MsgBox("trouvé en " & Sh.Name & "." & vbLf & _
         "Recherche du suivant ?", 4, "Recherche de " & Quoi) = 7 Then
         MsgBox "Recherche arrêtée !", , "Oups": Exit Sub
      End If
      T = "Plus "
    End If
  Next
  If T = "Pas" Then
    MsgBox "Recherche infructueuse !", , "Oups"
  Else
    MsgBox "Recherche terminéee !", , "Eh oui..."
  End If
End Sub
Amicalement,
Lionel,
 

grisan29

XLDnaute Accro
bonsoir Arthour93
je suis pas sur mais je me lances, pourquoi du as mis If devant quoi
Code:
If Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##") Then Exit Sub
car avec
then exit sub
quoi sort de la procédure
a certifier par Roland_M ou si...
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Lionel : ce n'est pas la syntaxe proposée par Roland... Revoir son #31

VB:
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet, Quoi, C As Range, T As String 'obligatoire avec Option Explicit
  Quoi = InputBox("Donnée à rechercher", "Recherche de ...")
  T = "Pas"
   If Quoi= "" Then GoTo Suite
  Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##")
Suite: 
  For Each Sh In Worksheets
    Set C = Sh.Cells.Find(Quoi, LookAt:=1, MatchCase:=1)  'voir aide pour la casse
    If Not C Is Nothing Then
      Sh.Activate: C.Select
      If MsgBox("trouvé en " & Sh.Name & "." & vbLf & _
         "Recherche du suivant ?", 4, "Recherche de " & Quoi) = 7 Then
         MsgBox "Recherche arrêtée !", , "Oups": Exit Sub
      End If
      T = "Plus "
    End If
  Next
  If T = "Pas" Then
    MsgBox "Recherche infructueuse !", , "Oups"
  Else
    MsgBox "Recherche terminéee !", , "Eh oui..."
  End If
End Sub
 

Roland_M

XLDnaute Barbatruc
bonsoir à tous,

arthour... m'enfin !? c'est quoi ça pour une affaire !?

c'est pourtant clair et simple, après cette ligne:
If Quoi = "" Then Exit Sub
tu mets ceci:
Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##")

mais qu'est ce qu'il t'a pris d'aller mettre un If mon ami ?
 

arthour973

XLDnaute Barbatruc
Bonsoir Grisan,
Bonsoir JGCL,

Merci de vous êtes pensé sur mon souci :)
Pour Grisan : j'ai tenté mais apparemment ça beug ...
Pour JGCJ : j'avais également tenté ce code mais ça ne fonctionne pas.
je joins mon classeur avec une photo du résultat attendu,
Vraiment merci d'être là.
Amicalement,
Lionel,
 

Fichiers joints

arthour973

XLDnaute Barbatruc
bonsoir à tous,

arthour... m'enfin !? c'est quoi ça pour une affaire !?

c'est pourtant clair et simple, après cette ligne:
If Quoi = "" Then Exit Sub
tu mets ceci:
Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##")

mais qu'est ce qu'il t'a pris d'aller mettre un If mon ami ?
Roland, j'ai essayé de mettre exactement ce qu tu as écrit mais ça ne formate pas le numéro.
Super merci à toi :confused: (peut-être ma puberté LOL)
Amicalement,
Lionel,
 

Roland_M

XLDnaute Barbatruc
re

bon là je n'y comprend plus rien !

vu tes numéros dans ta feuille 00 00 00 00 00
je pensais que tu voulais taper simplement 0000000000
et que la recherche s'effectue tel que le format sur les cellules !?
alors j'ai fais cette modif pour que la recherche soit identique au format sur les feuilles !
j'ai d'ailleurs fais des essais et évidemment c'était concluant !

apparemment c'est pas cela que tu souhaites !?
mais là encore mon ami tu t'exprimes mal !

du coup je sais pas trop ce que tu souhaites !?

EDIT:
ça devait donner ceci:
Code:
Private Sub CommandButton1_Click()
  Dim Sh As Worksheet, Quoi, C As Range, T As String 'obligatoire avec Option Explicit
  Quoi = InputBox("Donnée à rechercher", "Recherche de ...")
  T = "Pas"
  If Quoi = "" Then Exit Sub
  Quoi = Format(Quoi, "0#"" ""##"" ""##"" ""##"" ""##")
  For Each Sh In Worksheets
    Set C = Sh.Cells.Find(Quoi, LookAt:=1, MatchCase:=1)  'voir aide pour la casse
   If Not C Is Nothing Then
      Sh.Activate: C.Select
      If MsgBox("trouvé en " & Sh.Name & "." & vbLf & _
         "Recherche du suivant ?", 4, "Recherche de " & Quoi) = 7 Then
         MsgBox "Recherche arrêtée !", , "Oups": Exit Sub
      End If
      T = "Plus "
    End If
  Next
  If T = "Pas" Then
    MsgBox "Recherche infructueuse !", , "Oups"
  Else
    MsgBox "Recherche terminéee !", , "Eh oui..."
  End If
End Sub
 
Dernière édition:

arthour973

XLDnaute Barbatruc
Désolé, tu as raison.
En fait, nous copions les numéros sur notre site de travail (le net)

La copie
les numéros sont toujours affichés comme ça : 01 11 11 11 11
De plus, en fonction de son état ou de sa rapidité de copie, ma commerciale peut copier : 01 11 11 11 11 ou 1 11 11 11 11
ces numéros sont ensuite collés dans le classeur excel pour téléphoner à nos clients et là, pour ne pas perdre de temps à ressaisir ces numéros, ils doivent être collés comme ça : 33111111111

La recherche
Et quand nous avons besoin de rechercher dans le classeur pour voir si nous n'avons déjà traité un numéro de téléphone du net, nous avons besoin de rechercher ça 33111111111 (pas ça 01 11 11 11 11 ou ça 1 11 11 11 11).


Évidemment, j'aurais du prendre le temps d'écrire ces explications.

Ceci prouvant cela et je prie tout le monde de m'en excuser :(

Amicalement,
Lionel,
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
re

d'abord dans le code actuel je ne vois pas trace d'écriture dans des cellules de ces nos recherchés et trouvés !?
il y a simplement des msgbox !
ensuite pour la recherche tu tapes quel format !? 0123456789 ou 01 23 45 67 89 il s'agit d'être cohérent pour la recherche !

je te pris de m'excuser mais je vois pas les tenants et les aboutissants !?
 

Discussions similaires


Haut Bas