Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

recherche dans une plage

3 réponses
Avatar
dracbi
Bonjour,

Voici mon probl=E8me :
Les Objets :

Feuille : J' en ai 4
- Feuille 1 : Donn=E9e source
- Feuille 2 : Donn=E9e Recherche 1
- Feuille 3 : Donn=E9e Recherche 2
- Feuille 4 : Donn=E9e Recherche 3

J'aimerais rechercher une cellule de chaque ligne apparaissant dans la
feuille 1 dans chaque feuille suivante soit feuille 2 ; 3 ; 4.

Sub x()
Sheets("Feuille1").select
Activecell.specialcells(xltypelastcell).select
Range(Selection, (1)).select
For each d in Selection.rows
ligne as long
=2E...

Comment faire une recherche dans une boucle on sachant que je souhaite
parcourir chaque ligne de la feuille 1 dans chacune des autres
feuilles.

3 réponses

Avatar
Papyjac
Bonjour dracbi,

Je suppose que les Feuilles 2, 3 et 4 sont des recherches par formule dans
la feuille 1 (RECHERCHEV par exemple)

Du coup, je suppose également que les feuilles 1, 2, 3 et 4 n'ont ni la même
structure de colonnes, ni le même nombre de lignes

Dans ce cas j'aurai tendance à recommander de créer une Feuille 5 contenant
les formules AD HOC pour matcher les 4 premières feuilles... et ensuite dans
la macro tu t'appuies sur la feuille 5 uniquement

Ceci permet de rendre indépendant ton code VB de la structure de ton
classeur

Sinon, pour répondre à la question plus directement, Je propose :
1. Stocker les données des feuilles 2, 3 et 4 en tableau en mémoire
(uniquement les colonnes qui te conviennent)
2. Parcourrir la Feuille 1, comme ton code le propose
3. Pour chaque, effectuer la recherche en mémoire sur les 3 tableaux
For I = 1 to ?
if cells(;) = T1(I) then goto Trouvé1
next: goto Nontrouvé
Trouvé1:
For I = 1 to ?
if cells(;) = T1(I) then goto Trouvé2
next: goto Nontrouvé
Trouvé2:
For I = 1 to ?
if cells(;) = T1(I) then goto Trouvé3
next: goto Nontrouvé
Trouvé3:


Nontrouvé:


--
P a p y j a c
a écrit dans le message de
news:
Bonjour,

Voici mon problème :
Les Objets :

Feuille : J' en ai 4
- Feuille 1 : Donnée source
- Feuille 2 : Donnée Recherche 1
- Feuille 3 : Donnée Recherche 2
- Feuille 4 : Donnée Recherche 3

J'aimerais rechercher une cellule de chaque ligne apparaissant dans la
feuille 1 dans chaque feuille suivante soit feuille 2 ; 3 ; 4.

Sub x()
Sheets("Feuille1").select
Activecell.specialcells(xltypelastcell).select
Range(Selection, (1)).select
For each d in Selection.rows
ligne as long
....

Comment faire une recherche dans une boucle on sachant que je souhaite
parcourir chaque ligne de la feuille 1 dans chacune des autres
feuilles.
Avatar
Jacky
Bonjour,
Ceci place dans une feuille "resultat" les noms correspondants dans les
feuilles Recherche1 à Recherche3 à la feuille nommée "source" dans les
colonnes A
'--------------
Sub jj()
Dim sh As Worksheet
With Sheets("Resultat")
.Cells.ClearContents
[a1] = "Identique"
[b1] = "Trouver dans"
End With
For Each sh In ActiveWorkbook.Sheets
If sh.Name <> "Source" And sh.Name <> "Resultat" Then
With Sheets("Source")
For Each c In .Range("a2:a" & .Cells(Rows.Count, "a").End(3).Row)
For Each ChercheC In sh.Range("a2:a" & sh.Cells(Rows.Count,
"a").End(3).Row)
If ChercheC = c Then
Sheets("Resultat").Range("a" &
Sheets("Resultat").Cells(Rows.Count, "a").End(3).Row + 1) = c
Sheets("Resultat").Range("b" &
Sheets("Resultat").Cells(Rows.Count, "a").End(3).Row) = sh.Name
End If
Next
Next
End With
End If
Next
End Sub
'---------------------
voir ici
http://cjoint.com/?gbkSqDnRsa
--
Salutations
JJ


a écrit dans le message de news:

Bonjour,

Voici mon problème :
Les Objets :

Feuille : J' en ai 4
- Feuille 1 : Donnée source
- Feuille 2 : Donnée Recherche 1
- Feuille 3 : Donnée Recherche 2
- Feuille 4 : Donnée Recherche 3

J'aimerais rechercher une cellule de chaque ligne apparaissant dans la
feuille 1 dans chaque feuille suivante soit feuille 2 ; 3 ; 4.

Sub x()
Sheets("Feuille1").select
Activecell.specialcells(xltypelastcell).select
Range(Selection, (1)).select
For each d in Selection.rows
ligne as long
....

Comment faire une recherche dans une boucle on sachant que je souhaite
parcourir chaque ligne de la feuille 1 dans chacune des autres
feuilles.
Avatar
dracbi
On 1 juin, 10:46, "Jacky" wrote:
Bonjour,
Ceci place dans une feuille "resultat" les noms correspondants dans les
feuilles Recherche1 à Recherche3 à la feuille nommée "source" dans l es
colonnes A
'--------------
Sub jj()
Dim sh As Worksheet
 With Sheets("Resultat")
 .Cells.ClearContents
 [a1] = "Identique"
 [b1] = "Trouver dans"
 End With
For Each sh In ActiveWorkbook.Sheets
 If sh.Name <> "Source" And sh.Name <> "Resultat" Then
   With Sheets("Source")
     For Each c In .Range("a2:a" & .Cells(Rows.Count, "a").End(3).Ro w)
        For Each ChercheC In sh.Range("a2:a" & sh.Cells(Rows.Count ,
"a").End(3).Row)
         If ChercheC = c Then
           Sheets("Resultat").Range("a" &
Sheets("Resultat").Cells(Rows.Count, "a").End(3).Row + 1) = c
           Sheets("Resultat").Range("b" &
Sheets("Resultat").Cells(Rows.Count, "a").End(3).Row) = sh.Name
          End If
        Next
     Next
   End With
 End If
Next
End Sub
'---------------------
voir icihttp://cjoint.com/?gbkSqDnRsa
--
Salutations
JJ

a écrit dans le message de news:

Bonjour,

Voici mon problème :
Les Objets :

Feuille : J' en ai 4
- Feuille 1 : Donnée source
- Feuille 2 : Donnée Recherche 1
- Feuille 3 : Donnée Recherche 2
- Feuille 4 : Donnée Recherche 3

J'aimerais rechercher une cellule de chaque ligne apparaissant dans la
feuille 1 dans chaque feuille suivante soit feuille 2 ; 3 ; 4.

Sub x()
Sheets("Feuille1").select
Activecell.specialcells(xltypelastcell).select
Range(Selection, (1)).select
For each d in Selection.rows
ligne as long
....

Comment faire une recherche dans une boucle on sachant que je souhaite
parcourir chaque ligne de la feuille 1 dans chacune des autres
feuilles.


Merci à tous j'ai finalement utilisé une comparaison plus simpliste
dans ce genre la...

Sub comparaison()
Dim Valeurchercher As String
Dim ValeurComparer As String
Dim d As Range
Dim ligne As Long
Dim plage As Range
Dim ligne1 As Long
Sheets("RECHERCHE").Select
ActiveCell.SpecialCells(xlCellTypeLastCell).Select
Range(Selection, "A1").Select
For Each d In Selection.Rows
ligne = d.Row
Valeurchercher = d.Cells(1, 6).Value

Sheets("COMPTA1").Select
Range("a1").Select
ActiveCell.SpecialCells(xlCellTypeLastCell).Select
Range(Selection, "A1").Select

For Each plage In Selection.Rows
ligne1 = plage.Row
If plage.Cells(1, 6).Value = Valeurchercher Then
plage.Cells.Interior.ColorIndex = 8
plage.Copy
Sheets("RESULTAT").Select
Cells(ligne1, 1).Select
Selection.PasteSpecial
End If
Next plage
Next d
Dim derli As Long
ActiveCell.SpecialCells(xlCellTypeLastCell).Select
Range(Selection, Cells(1)).Select
With ActiveSheet.UsedRange
derli = .Cells(.Cells.Count).Row
End With
For r = derli To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub