RECHERCHE AVEC MACRO

  • Auteur de la discussion PATPOWER
  • Date de début

PATPOWER

Habitué
BONJOUR,
QUELQU UN SAIS S IL EST POSSIBLE DE CREER UNE CELLULE OU LE TEXTE QU ON Y ENTRE SERAIS RECHERCHÉ AUTOMATIQUEMENT SANS APPUYER SUR ENTER?

PAR EXEMPLE UNE COLONE DE NUMERO DE TELEPHONE ET DES QU ON ECRIS DES CHIFFRE EN A1 PAR EXEMPLE, LES NUMERO QUI NE CORRESPONDENT PAS SON CACHÉ ET CEUX QUI CORRESPONDENT RESTE VISIBLE.
EX: CELL A1 ON Y ECRIS 450

DANS LA LISTE RESTE UNIQUEMENT LES NUMERO 450...

J ESPERE QUE C EST CLAIR.. LE PLUS DURE C EST QUE LE TRI SE FASSE A MESURE QUE L ON ECRIS , SANS ETRE OBLIGÉ DE FAIRE ENTER..
 

Thore

Grand Maître
Tu peus écrire normalement (pas tous en majuscule) au lieu crier !
 

PATPOWER

Habitué
dsl..c est mon ordinateur au bureau..on travail toujour en cap lock..dsl.
 

zeb

Modérateur
Salut,

Non, ce n'est pas possible (*) : l'événement OnChange d'Excel ne traite que les changements après validation.


_________

(*) En fait, rien n'est impossible bien sûr, mais je ne m'engage pas sur le terrain de refaire le gestionnaire d'événements d'Excel.
 

PATPOWER

Habitué
serait-il alors possible de faire une macro qui roule en continu sans bogue, cela ce peut, mais qui ferais en sorte de valider a mesure que j ecris? Le truc c est de savoir comment excel reagirais..
 

zeb

Modérateur
C'est impossible à faire en VBA/Excel.

_______
PS: Et je n'écris pas de programme avec bogue, ou du moins, je m'y efforce.
 

PATPOWER

Habitué
Ok, oui j espère!!:)
car j ai une macro qui affiche l heure en temps réelle, une sorte d horloge numérique en quelque sorte... et pour ce faire c est une genre de macro en boucle qui récupère l heure sur window a chaque instant je crois,avec un code anti-bogue pour nous permettre de garder le controle sur la page.
Je ne suis pas trop expert en vba alors une bonne partie de cette macro est du chinois pour moi, c est pour celà que je me demandais si ça pourrait s appliquer a mon cas..
 

drul

Obscur pro du hardware
Staff
Une solution est d'utiliser une textbox a la place d'une cellule pour taper ton texte.
L'événement "change" de la textbox est appeler à chaque fois que tape.

Sinon, la macro dont tu parles, utilise certainement la fonction ontime, le problème est qu'on ne peut pas accéder au contenu d'une cellule tant que que ce que tu tapes n'est pas validé (enter), il est donc impossible d'utiliser cette méthode.
 

PATPOWER

Habitué
tu saurais pas comment rechercher du text lettre par lettre de la gauche.. ex je veux que si je met un 4 tout les cell qui commence par un 4 reste...j ajoute un 2 bah toute celle avec un 42 au debut reste..un genre de tri par correspondance exact.. au fond tout ma page sera caché, puis avec ce tri je vais faire apparaitre le nom de plage ou les nom de plage correspondantes..
 

drul

Obscur pro du hardware
Staff


Salut un astucieux mélange des fonctions "left" et "len" devrait faire l'affaire
L'expemple ci-dessous montre comment faire ce que tu veux sur la colonne c pour les 10 premières lignes
Code:
Private Sub TextBox1_Change()
Dim tempstring
  For i = 1 To 10
    tempstring = Left(Cells(i, 3).Value, Len(TextBox1.Value))
    If tempstring <> TextBox1.Value Then
      Rows(i).RowHeight = 0
    Else
      Rows(i).RowHeight = 14
    End If
  Next i
End Sub

P.S. Il existe d'autre moyen pour faire disparaître les cellules que tu veux cacher, p.ex. écrire en blanc sur blanc
 

zeb

Modérateur
Rholala !
drul, jette un oeil à l'opérateur Like. Tu réviseras ton avis sur le mélange Left et Len

;)

_____
(Je cherche un moyen de récupérer l'événement ON_CHANGE du composant "éditeur de cellule". Pour l'instant, je patauge.)
 

drul

Obscur pro du hardware
Staff

J'ai pas dit que c'était parfait ...
On peut effectivement faire plus simple avec like, j'ai fait ça un peu vite :(

Mais tu gagnes quand même une ligne dans le code, quel progrès :)
(en temps d'exécution par contre, je me demande ce qu'il y a derrière like ...)
 

zeb

Modérateur
>> J'ai pas dit que c'était parfait ...
Ah, moi non plus :o

Le VB est un langage interprété déplorablement long. En revanche, les fonctions internes sont en général plus efficaces car compilées.

-------

Ah ne me cherche pas sur le terrain de la condensation de code, je suis un maboul :pt1cable:
Code:
Sub TextBox1_Change()
    Dim cell As Range
    For Each cell In Range("C1:C10")
        cell.EntireRow.RowHeight = IIf(TextBox1.Value Like Cells.Value & "*", 0, 14)
    Next
End Sub

:lol: :lol: :lol:
 

PATPOWER

Habitué
je ne connais pas cette fonction..mais je dois récupérer le nom dans la colone a droite de la valeur recherchée..ce nom correspond à un nom de plage, plage que je dois montrer. donc je prendrais ton code (qui marche bien) mais au lieu de cacher ou montrer directement la ligne, je cacherais ou montrerais la plage correspondante au nom.
Vous aurez sans doute des question..hehe
merci beaucoup pour votre aide en passant!
 

drul

Obscur pro du hardware
Staff


Très joli, bravo, je connaissais pas IIF,
je m'endormirai moins idiot. :pt1cable:

Edit: remarque, ce serait pas plutôt:
Code:
Sub TextBox1_Change()
    Dim cell As Range
    For Each cell In Range("C1:C10")
        cell.EntireRow.RowHeight = IIf(TextBox1.Value & "*" Like Cells.Value, 0, 14)
    Next
End Sub
 

zeb

Modérateur
Oups... Si, bien sûr !

Eh ! T'as découvert Like et IIf() en même temps :D

Joli, joli... Faut voir. Souvent, un code bien clair est plus facile à déboguer et à maintenir qu'un truc hyper condensé.

Avec un Like, on est dans la programmation claire, avec des Len(), Mid(), Left() imbriqués, on est dans la complication, avec des IIf() on est dans le codage touffu et fouillis.
Tout ça pour dire que bien programmer, c'est utiliser la bonne fonction au bon moment, et pas tenter de gagner 2,5 lignes de code ;)
 

PATPOWER

Habitué
ca ressemble a : numero telephone nom service1 date
service2 date
service3 date

la plage qui englobe toutes ces cell s appelle comme le nom car le meme telephone peut servir pour plusieurs personne d une meme famille..

donc je veut que en inscrivant le telephone il ne me reste que les correspondances,par la suite je vais choisir probablement dans un menu deroulant un nom s il en a plus d un. Donc je doit montrer ou cacher un nom de plage qui correspond a la cell a droite du telephone.
 

drul

Obscur pro du hardware
Staff


Tu as parfaitement raison, et like, je vais utiliser, iif, pas sûr ...
 

drul

Obscur pro du hardware
Staff


Salut PAT POWER, étant papa depuis moins d'une journée, je vais manqué de temps pour m'occupé de ton problème, dsl.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 120
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut