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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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,
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.
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
<dracbi@hotmail.fr> a écrit dans le message de
news:fb655d79-9b78-4907-a62a-0c5cf8e614ff@27g2000hsf.googlegroups.com...
Bonjour,
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.
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,
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.
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
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.
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
<dracbi@hotmail.fr> a écrit dans le message de news:
fb655d79-9b78-4907-a62a-0c5cf8e614ff@27g2000hsf.googlegroups.com...
Bonjour,
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.
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
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.
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
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
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
On 1 juin, 10:46, "Jacky" <Dup...@marcel.fr> 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
<dra...@hotmail.fr> a écrit dans le message de news:
fb655d79-9b78-4907-a62a-0c5cf8e61...@27g2000hsf.googlegroups.com...
Bonjour,
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
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
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
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
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