Microsoft 365 Formatage N° dans la recherche

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous et à toutes,
Tout d'abord, je vous souhaite un bon dimanche,

Il y a quelques temps, sur ce fil : https://www.excel-downloads.com/threads/rechercher-en-commencant-par-la-feuille-active.20029485/
Vous m'aviez donné des codes pour faire une recherche dans toutes les feuilles d'un classeur.

Tous vos codes, aussi supers les uns que les autres, m'ont été très utiles et m'ont permis de faire un choix pour intégrer celui de Youky - modifié par Mapomme qui convient le mieux à mon fichier de travail.
Un grand merci à toutes pour vos gentillesses et technicité.

J'y reviens pour, je l'espère, qu'une amélioration y soit apportée.
Voici ma demande :
Nous copions les n° de téléphone à appeler à partir d'un logiciel (par accès internet).
Les n°, grâce au code que Patrick m'a donné lors d'une autre demande, sont enregistrés (quel que soit le format du N° copié) dans notre fichier sous cette forme : 33111111111
comme sur la photo
Sans titre.jpg


Le code de Patrick fonctionne également super bien et s'exécute très rapidement.
Ce code supprime toutes les imperfections (" "-"."-"/"-";"-","-",;") pour mener à l'enregistrement : 33111111111
Le voici :
VB:
Sub Patrick()
Dim Var$, X$, i&
    Var = ActiveCell.Value
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept("@@", 30)))), " ", "")
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept("@@", 30)))), ".", "")
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept("@@", 30)))), "/", "")
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept("@@", 30)))), ";", "")
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept("@@", 30)))), ",", "")
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept("@@", 30)))), ",;", "")
    ActiveCell = Var
    Value = 33 & Value
End Sub

Mais je n'arrive pas à le modifier pour transformer le format d'un n° quand je le copie dans la recherche pour le trouver :
Par exemple, si je copie à partir du net un n° sous ces formes 01 11 11 11 11 ou 1 11 11 11 11 ou autre format
J'aurais besoin que le code soit adapté pour le transformer et apparaisse dans la recherche en 33111111111

Pourriez-vous m'aider ?
Je joins un fichier test
Avec mes remerciements par avance,
Amicalement,
lionel :)
 

Pièces jointes

  • Recherche_ts_onglets_Youki_test.xlsm
    42.3 KB · Affichages: 9
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour à toutes et à tous,

Je profite de cette période de fêtes, plus calme côté travail, et je tente d'améliorer mon "usine à gaz" comme dirait mon cher Gérard LOL.
J'essaie de refaire mes codes "bidouillés" avec les connaissances que j'ai acquises grâce à vos codes et explications que vous m'avez si gentiment fourni au fil du temps.

Présentement, je souhaite accélérer la recherche qui est "longue en temps d'exécution".
Cette recherche grâce aux interventions de Mapomme, Youky, Gérard, Patrick, Roland ... fonctionne très bien.
Toutefois, dans mon classeur elle se fait sur :
- 4 onglets et chaque onglet contient environ 50000 lignes et environ 45/50 colonnes... soit 10 000 000 de cellules à contrôler
Ceci, selon moi, expliquant certainement le temps de traitement.


Je pense qu'il est possible de réduire ce temps car les cellules à "visiter" sont exactement les mêmes sur tous les onglets :
- de g7:h7 à dernière ligne NON vide

Mais je n'arrive pas à coder pour que la recherche "ne visite" que de g7:h7 à dernière ligne NON vide des 4 onglets.
soit 400 000 de cellules à contrôler = 25 fois moins de cellules à visiter
Voici ci-dessous le code que j'utilise :
Code:
Sub Recherche_youky_Mapomme()
nom = InputBox("Saissisez votre N° sans espaces", "Recherche N° de Téléphone")
If nom = "" Then
Application.EnableEvents = False
Sheets("SuivisAppels").Select
Application.EnableEvents = True
Exit Sub
End If
  q = ActiveSheet.Index
  For q = q To ActiveSheet.Index + Sheets.Count - 1
    k = (q - 1) Mod (Sheets.Count) + 1
With Sheets(k).UsedRange
Set C = .Find(nom, LookIn:=xlValues)
'Set c = .Find(nom, LookAt:=xlWhole) 'cellule entière
Set C = .Find(nom, LookAt:=xlPart)   'contenu dans cellule
If Not C Is Nothing Then
firstAddress = C.Address
Do
On Error Resume Next
Sheets(k).Select
C.Activate
rep = MsgBox("Continuer la recherche ?", 4 + 32, "Sélection")
If rep = vbNo Then Exit Sub
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With
  Next q
MsgBox "Ben NON : y'a pas ou y'a plus !"
End Sub

Si vous aviez la solution, ça m'arrangerait vraiment car je fais des dizaines de recherche par jour.
Ce serait certainement un gain important de temps.

Un grand merci déjà pour m'avoir lu,
Amicalement,
lionel,
 
Dernière édition:

laurent950

XLDnaute Accro
Bonsoir,
- 4 onglets et chaque onglet contient environ 50000 lignes et environ 45/50 colonnes... soit 10 000 000 de cellules à contrôler
Ceci, selon moi, expliquant certainement le temps de traitement.
je suis curieux de connaitre le temps de traitement entre le moment ou vous lancer la recherche et votre résultat ?
Cela m'intéresse de réduire le temps de traitement sur 10 000 000 de cellules à contrôler sur 4 Onglets d'un classeur excel.
Merci
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bsr Laurent,
Le temps de traitement est actuellement de 20 à 30 secondes.
Je ne sais pas si c'est possible de réduire le temps de traitement car le code me semble déjà nickel.

Dans mon classeur la recherche se fait sur :
- 4 onglets et chaque onglet contient environ 50000 lignes et environ 45/50 colonnes... soit 10 000 000 de cellules à contrôler
Ceci, selon moi, expliquant certainement le temps de traitement.


Je pense qu'il est possible de réduire ce temps car les cellules à "visiter" sont exactement les mêmes sur tous les onglets :
- de g7:h7 à dernière ligne NON vide

Mais je n'arrive pas à coder pour que la recherche "ne visite" que de g7:h7 à dernière ligne NON vide des 4 onglets.
soit 400 000 de cellules à contrôler = 25 fois moins de cellules à visiter

Mais même si ce n'est pas forcément proportionnel, je pense que le résultat le gain de temps serait important.
lionel,
 

laurent950

XLDnaute Accro
Bonjour,
Vous cherchez des mots, des phrases, des numéros de téléphones.
Si vous avez un classeur avec la structure de ses onglets en exemple :
Et comment doit être affiché le résultat et pour les cas avec des doublons :
cdt
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 097
Membres
103 116
dernier inscrit
kutobi87