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

Find ,Methode et Plage MultiCellules

ChTi160

XLDnaute Barbatruc
bonjour le Forum
par ce Dimanche pas très Clair
une Question qui j'espère le sera(Claire) Lol
j'ai eu à rechercher dans une plage (Range('A2:B10'))

une valeur qui est la Concaténation de Deux valeurs Toto &' '& Tutu.
au lieu d'utiliser la boucle for each cellule en colonne A if Cellule ='Toto'and Cellule.Offset(0,1)='Tutu' then ListBox1.....Etc
j'ai pensé utilisé la méthode Find
exemple
maplage=Range('A2:B10')
maVar= Toto&' '&Tutu
rep=maplage.Find(maVar) sachant que A3=Toto et B3=Tutu


pensez vous que celà soit possible ?
et si Oui Comment (biensûr) Lol

Merci d'avance

Message édité par: chti160, à: 05/06/2005 16:32
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Jean Marie, bonsoir le forum,

Cette macro devrait t'aider :


 

ChTi160

XLDnaute Barbatruc
Salut Robert
Bonjour le Forum

je te remercie pour l’intérêt que tu as porté à ma Question mais la l’aide que tu m’as apportée ne me permet pas d’arriver à ce que je voulais
si je recherche dans maplage
la Concaténation des deux Variables rien, car je ne sais pas si la recherche peut se faire sur une plage Multiple ici 2 cellules Contiguës contenants pour la première
Toto et pour la deuxième tutu
j’ai donc essayé de faire
Code:
With Worksheets ('Feuil1')
Set maplage = .Range ('A2:A10') 'définit la variable maplage 
maVar = 'Toto'  '& Tutu 'définit la variable maVar
maVar2 = 'Tutu''définit la variable maVar2
End With
With maplage
Set c = .Find (maVar, , xlValues) 'définit la variable c (recherche maVar dans les valeurs de la plage)
If Not c Is Nothing And c.Offset (0, 1) = maVar2 Then   'si il existe au moins une occurrence
  
 FirstAddress = c.Address
        Do
     MsgBox maVar & ' ' & maVar2 & ' Ligne' & c.Row 'Affichage
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> FirstAddress
 
 End If

End With
mais si il y a Toto et quelque chose qui n’est pas Tutu la macro ne retourne rien si le premier Toto et associé à Tutu alors là la macro me renvoie les différentes Occurrences
je tente de chercher sur le Net mais rien
Merci encore
Bonne Journée
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Jean Marie, bonjour le forum,

Je t'avoue que je ne comprends pas très bien. Ce qui me gêne c'est la plage de la recherche A2:B10 dans laquelle tu recherche une concaténation de A et B ???
Je te propose cette nouvelle macro en aveugle en espérant qu'elle te convienne ou te permete d'arriver à tes fins.


 

ChTi160

XLDnaute Barbatruc
re Robert
bon je ne voudrais pas de perturber en début de semaine lol c'est pas bon
donc je tente de t'expliquer
j'essaye d'approvisionner une listeBox d'après deux critères
dans un combobox je sélectionne un nom et la recherche se lance
colonne 1 de ma Combobox nom colonne 2 de ma Combobox La Date
j'obtiens maVar= CmbB.columns(1,cmbB.ListIndex)&''&CmbB.Columns(2,CmbB.ListIndex) en simplifié Lol
ex le nom(qui se trouve en colonne A de ma plage'A2:B10' et le mois de la date qui se trouve dans la colonne B de ma

plage 'A2:B10' soit si j'ai nom & '' & moisDate je remplie les colonnes de ma listbox avec les données de la ligne ou se trouvent à la fois en A nom et en B moisDate sur la m^eme ligne je pensais augmenter la rapidité en passant par la méthode Find plutôt que de passer en revue des centaines de lignes et ainsi aller à l'essentiel QUOI Lol Mais bon
je regarde ta nouvelle Macro
Encore Merci

Message édité par: Chti160, à: 06/06/2005 11:19
 
M

michel_m

Guest
Salut Jean Marie, Robert

Si j’ai piger ton pb, chose exceptionnelle un Lundi

La fonction Find fonctionne sur une cellule or tes 2 variables accupent chacune une cellule

Tu pourrais essayer avec 2 fonctions find

Toto=ton combo colonne1
Tata= toncombocolonne2

Find commence à chercher APRES la première cellule

On error resume next
LigA=columns(1).find(toto,range(“A1”),,,xlbyrows).row
LigB=columns(2).find(tata,range(“B1”),,,xlbyrows).row
If error>0 then
Msgbox “ inconnu”
Exit sub
End if
IF ligA<>ligb then
Msgbox “ personne”
Else
Tes instructions
End if


Syntaxe « error » à vérifier

A+

Michel (at work)
 

ChTi160

XLDnaute Barbatruc
Salut michel
Content de te rencontrer Bravo encore pour tes Apports au Forum (concernant un domaine que je ne maîtrise pas, mais très instructif)
bon pour mon problème j’ai essayé cette possibilité mais y a un problème de coordination entre les deux méthodes Find
quand Find « Toto » est true en colonne A ligne 2 et que Find Tutu est bon en colonne 5 donc pas sur la même ligne ça Fonctionne pas même si en colonne A ligne 5, j’ai Toto
Enfin je vais regarder ce que tu m’as proposé et je ne manque pas d’informer le Fil
Merci encore
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Chti160, Robert, michel_m,

Jean-Marie, tu y étais presque à mon avis, j'ai repris ta dernière proposition et j'ai fait ceci qui semble fonctionner :
Cela dit, j'ai essayé aussi d'une autre façon qui, après test sur 50000 lignes (en supprimant le msgbox bloquant pour les 2), est 20 fois plus rapide car travaillant directement sur un tableau variant (et non sur les ranges de la feuille) :
En espérant que cela puisse t'aider...

Cordialement,
 

ChTi160

XLDnaute Barbatruc
Salut Didier
Je pense que tu as répondu à mon attente et dès demain je fais des essais
(Je n'ai pas encore testé) mais je te connais, jamais au Hasard lol
je n'ai pas malgré tes Leçons, essayé les tableaux alors que ce soir dans un autre domaine je l'ai fait, Arf:: y a tellement de chose à disposition que je ne sais plus lol
Merci encore pour ton aide et ton enseignement
Bonne Journée et à bientôt
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…