OVH Cloud OVH Cloud

Possible ou pas possible ?

22 réponses
Avatar
christophe lenoire
Bonjour =E0 toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais=20
seules deux m'int=E9ressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des pr=E9noms.
Mon tableau fait actuellement aux environs de 33.000=20
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une=20
macro me permettant d'effectuer une recherche sur I et J=20
d'une m=EAme ligne.
Exemple : je veux chercher dans ma feuille s'il existe un=20
DURAND (colonne I) pr=E9nomm=E9 Pierre (colonne J)...
Bien s=FBr qu'il serait possible d'obtenir cela par un tri=20
sur I et J mais je ne peux d=E9placer les lignes pour des=20
raisons perso. Je crois que seule une macro pourrait me=20
permettre, sans d=E9placer quoi que ce soit, de faire ce=20
type de recherches, non ?
Merci de votre avis,
Christophe

10 réponses

1 2 3
Avatar
papou
Bonjour Christophe
Et le filtre automatique ?
Cordialement
Pascal
"christophe lenoire" a écrit dans le
message de news: 1193801c3f52b$d113a3f0$
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe
Avatar
Bonjour Pascal,
Merci.
En fait le filtre auto ne va me permettre que de chercher
sur une colonne à la fois. Je cherche depuis 10 jours
maintenant en fait s'il est possible avec Excel via une
macro de déclencher l'ouverture d'une popup dans laquelle
il y aurait deux champs à remplir : le nom et le prénom.
Excel regarderait dans la colonne I+J et se
positionnerait, s'il trouve une correspondance, à la
ligne adéquate. Mais dur-dur malgré tous mes essais...
après tout j'idolâtre peut-être trop Excel... je ne sais
pas.
-----Message d'origine-----
Bonjour Christophe
Et le filtre automatique ?
Cordialement
Pascal
"christophe lenoire"
a écrit dans le

message de news: 1193801c3f52b$d113a3f0
$

Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe


.



Avatar
Modeste
Bonjour,
utiliser les filtres automatiques.

ou encore
uniquement pour tester l'existence sans macro :
avec des plages (lesNoms, LesPrenoms) nommées de tailles
identiques.
UnNom = 1er critère
UnPrénom=2éme critère

=SommeProd(1*(UnNom=LesNoms)*(UnPrénom=LesPrenoms))

ceci te donnera le nombre d'occurences

ensuite selon le nombre d'occurences......

soit tu utilises le mode recherche puis F3

soit tu attends un peu et l'un des freres V ne tardera
point à te donner la formule pour connaitre l'adresse de
la premiere occurence !!!

ou bien là, il te faudra une macro :-)
;-))))
@+

-----Message d'origine-----
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe
.



Avatar
Christophe
Bonjour et merci,
Sauf que ça ne m'apporte rien de nouveau et revient au
même résultat actuel... quant au nombre d'occurences...
je vois pas trop l'utilité de diversifier et de
compliquer autant une procédure somme toute très simple.
Quant l'on fait CTRL+F on obtient une fenêtre avec un
champ de recherche... Moi je cherche LA MEME CHOSE mais
avec 2 champs de recherche... Ce n'était rien que ça...
Je suis certain que les spécialistes connus de ce forum
que je visite chaque jour dans l'ombre (pour apprendre
encore plus) sauront m'affirmer ou non s'il est possible
d'arriver au résultat que je souhaite et la procédure à
suivre... dans l'attente je continue à visiter les
messages que je n'ai pas encore lu depuis hier...

-----Message d'origine-----
Bonjour,
utiliser les filtres automatiques.

ou encore
uniquement pour tester l'existence sans macro :
avec des plages (lesNoms, LesPrenoms) nommées de tailles
identiques.
UnNom = 1er critère
UnPrénom=2éme critère

=SommeProd(1*(UnNom=LesNoms)*(UnPrénom=LesPrenoms))

ceci te donnera le nombre d'occurences

ensuite selon le nombre d'occurences......

soit tu utilises le mode recherche puis F3

soit tu attends un peu et l'un des freres V ne tardera
point à te donner la formule pour connaitre l'adresse de
la premiere occurence !!!

ou bien là, il te faudra une macro :-)
;-))))
@+

-----Message d'origine-----
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes
mais


seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et
J


d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe
un


DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un
tri


sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe
.

.





Avatar
Modeste
bonjour,
;-)))

Sub Macro1()
Lenom = InputBox("saisir un Nom")
leprenom = InputBox("saisir un prénom")
With Worksheets(1).Range("LesNoms")
Set c = .Find(Lenom, LookIn:=xlValues, LookAt:=xlPart,
MatchCase:úlse, SearchOrder:=xlByColumns)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If UCase(c.Offset(0, 1)) = UCase(leprenom) Then
c.EntireRow.Select: Exit Sub
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <>
firstAddress
End If
End With

End Sub

-----Message d'origine-----
Bonjour Pascal,
Merci.
En fait le filtre auto ne va me permettre que de chercher
sur une colonne à la fois. Je cherche depuis 10 jours
maintenant en fait s'il est possible avec Excel via une
macro de déclencher l'ouverture d'une popup dans laquelle
il y aurait deux champs à remplir : le nom et le prénom.
Excel regarderait dans la colonne I+J et se
positionnerait, s'il trouve une correspondance, à la
ligne adéquate. Mais dur-dur malgré tous mes essais...
après tout j'idolâtre peut-être trop Excel... je ne sais
pas.
-----Message d'origine-----
Bonjour Christophe
Et le filtre automatique ?
Cordialement
Pascal
"christophe lenoire"
a écrit dans le

message de news: 1193801c3f52b$d113a3f0
$

Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe


.

.





Avatar
Michel Pierron
Bonjour Christophe;
Regarde si ceci peut t'aider:
Private Function WordToFind&(oSheet As Worksheet, ByVal Row1& _
, ByVal Row2&, ByVal Col As Byte, What As Variant, Whole As Boolean)
Dim Word As Range, Who As Byte, Début As String, Fin As String
If Whole Then Who = 1 Else Who = 2
Début = oSheet.Cells(Row1, Col).Address
Fin = oSheet.Cells(Row2, Col).Address
Set Word = oSheet.Range(Début, Fin).Find(What, LookAt:=Who)
If Word Is Nothing Then WordToFind = 0 Else WordToFind = Word.Row
End Function

Private Sub FindName(LastName$, FirstName$, Col1%, Col2%)
Dim eRow As Long, lRow As Long, fRow As Long: fRow = 1
lRow = ActiveSheet.Range("I65536").End(xlUp)
Do While fRow <= lRow
eRow = WordToFind(ActiveSheet, fRow, lRow, Col1, LastName, True)
If eRow = 0 Then Exit Do
If ActiveSheet.Cells(eRow, Col2) = FirstName Then
Counter = Counter + 1
ActiveSheet.Rows(eRow).Font.ColorIndex = 3
End If
fRow = eRow + 1
Loop
MsgBox Counter & " correspondance(s) trouvée(s) !", 64
End Sub

Sub PersonnaGrata()
FindName "durand", "pierre", 9, 10
End Sub

MP

"christophe lenoire" a écrit dans le message
de news:1193801c3f52b$d113a3f0$
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe
Avatar
Modeste
;-)))
la question était : possible ou pas possible ?
ma réponse est oui !!!!
ton cahier des charges étant trés succinct ma réponse
était du même type....

Ce n'était rien que ça...
cela sous-entend beaucoup de chose !!!!!!!!

qu'en est-il de la dynamique d'utilisation ou du besoin
final ?????
une macro ne se justifie que dans le cas de travaux
répétififs ou fastidieux.
intégration dans un contexte plus large, plages dynamiques,
noms de feuilles ou de classeurs variables, utilisations
par des utilisateurs differents (qu'ils soient ignares ou
évolués)
;-)))
@+
-----Message d'origine-----
Bonjour et merci,
Sauf que ça ne m'apporte rien de nouveau et revient au
même résultat actuel... quant au nombre d'occurences...
je vois pas trop l'utilité de diversifier et de
compliquer autant une procédure somme toute très simple.
Quant l'on fait CTRL+F on obtient une fenêtre avec un
champ de recherche... Moi je cherche LA MEME CHOSE mais
avec 2 champs de recherche... Ce n'était rien que ça...
Je suis certain que les spécialistes connus de ce forum
que je visite chaque jour dans l'ombre (pour apprendre
encore plus) sauront m'affirmer ou non s'il est possible
d'arriver au résultat que je souhaite et la procédure à
suivre... dans l'attente je continue à visiter les
messages que je n'ai pas encore lu depuis hier...

-----Message d'origine-----
Bonjour,
utiliser les filtres automatiques.

ou encore
uniquement pour tester l'existence sans macro :
avec des plages (lesNoms, LesPrenoms) nommées de tailles
identiques.
UnNom = 1er critère
UnPrénom=2éme critère

=SommeProd(1*(UnNom=LesNoms)*(UnPrénom=LesPrenoms))

ceci te donnera le nombre d'occurences

ensuite selon le nombre d'occurences......

soit tu utilises le mode recherche puis F3

soit tu attends un peu et l'un des freres V ne tardera
point à te donner la formule pour connaitre l'adresse de
la premiere occurence !!!

ou bien là, il te faudra une macro :-)
;-))))
@+

-----Message d'origine-----
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes
mais


seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et
J


d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe
un


DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un
tri


sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe
.

.


.






Avatar
Christophe
Bonjour Michel,
Grand merci pour votre apport... je crois qu'il devrait
faire le résultat que je souhaite... le seul hic est
qu'il m'affiche un message d'erreur au lancement de la
macro. J'utilise Excel 2002 pour info. Puis-je vous
envoyer sur votre messagerie deux pages Word reprenant
les 2 captures d'écran de ce message d'erreur ? L'erreur
se situe sur votre ligne :
lRow = ActiveSheet.Range("I65536").End(xlUp)
Merci
-----Message d'origine-----
Bonjour Christophe;
Regarde si ceci peut t'aider:
Private Function WordToFind&(oSheet As Worksheet, ByVal
Row1& _

, ByVal Row2&, ByVal Col As Byte, What As Variant, Whole
As Boolean)

Dim Word As Range, Who As Byte, Début As String, Fin
As String

If Whole Then Who = 1 Else Who = 2
Début = oSheet.Cells(Row1, Col).Address
Fin = oSheet.Cells(Row2, Col).Address
Set Word = oSheet.Range(Début, Fin).Find(What,
LookAt:=Who)

If Word Is Nothing Then WordToFind = 0 Else WordToFind
= Word.Row

End Function

Private Sub FindName(LastName$, FirstName$, Col1%, Col2%)
Dim eRow As Long, lRow As Long, fRow As Long: fRow = 1
lRow = ActiveSheet.Range("I65536").End(xlUp)
Do While fRow <= lRow
eRow = WordToFind(ActiveSheet, fRow, lRow, Col1,
LastName, True)

If eRow = 0 Then Exit Do
If ActiveSheet.Cells(eRow, Col2) = FirstName Then
Counter = Counter + 1
ActiveSheet.Rows(eRow).Font.ColorIndex = 3
End If
fRow = eRow + 1
Loop
MsgBox Counter & " correspondance(s) trouvée(s) !", 64
End Sub

Sub PersonnaGrata()
FindName "durand", "pierre", 9, 10
End Sub

MP

"christophe lenoire"
a écrit dans le

message
de news:1193801c3f52b$d113a3f0$
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe


.



Avatar
Michel Pierron
Re Christophe;
Pour supprimer l'erreur et rendre la macro plus universelle, modifie la ligne:
lRow = ActiveSheet.Range("I65536").End(xlUp) en:
lRow = ActiveSheet.Cells(65536, Col1).End(xlUp).Row
NB: cette macro te permets également de repérer les doublons.
MP

"Christophe" a écrit dans le message de
news:119d601c3f539$eefaf130$
Bonjour Michel,
Grand merci pour votre apport... je crois qu'il devrait
faire le résultat que je souhaite... le seul hic est
qu'il m'affiche un message d'erreur au lancement de la
macro. J'utilise Excel 2002 pour info. Puis-je vous
envoyer sur votre messagerie deux pages Word reprenant
les 2 captures d'écran de ce message d'erreur ? L'erreur
se situe sur votre ligne :
lRow = ActiveSheet.Range("I65536").End(xlUp)
Merci
-----Message d'origine-----
Bonjour Christophe;
Regarde si ceci peut t'aider:
Private Function WordToFind&(oSheet As Worksheet, ByVal
Row1& _

, ByVal Row2&, ByVal Col As Byte, What As Variant, Whole
As Boolean)

Dim Word As Range, Who As Byte, Début As String, Fin
As String

If Whole Then Who = 1 Else Who = 2
Début = oSheet.Cells(Row1, Col).Address
Fin = oSheet.Cells(Row2, Col).Address
Set Word = oSheet.Range(Début, Fin).Find(What,
LookAt:=Who)

If Word Is Nothing Then WordToFind = 0 Else WordToFind
= Word.Row

End Function

Private Sub FindName(LastName$, FirstName$, Col1%, Col2%)
Dim eRow As Long, lRow As Long, fRow As Long: fRow = 1
lRow = ActiveSheet.Range("I65536").End(xlUp)
Do While fRow <= lRow
eRow = WordToFind(ActiveSheet, fRow, lRow, Col1,
LastName, True)

If eRow = 0 Then Exit Do
If ActiveSheet.Cells(eRow, Col2) = FirstName Then
Counter = Counter + 1
ActiveSheet.Rows(eRow).Font.ColorIndex = 3
End If
fRow = eRow + 1
Loop
MsgBox Counter & " correspondance(s) trouvée(s) !", 64
End Sub

Sub PersonnaGrata()
FindName "durand", "pierre", 9, 10
End Sub

MP

"christophe lenoire"
a écrit dans le

message
de news:1193801c3f52b$d113a3f0$
Bonjour à toutes et tous,
J'ai une feuille Excel contenant plusieurs colonnes mais
seules deux m'intéressent dans le cadre de ce message.
En colonne I j'ai des noms.
En colonne J j'ai des prénoms.
Mon tableau fait actuellement aux environs de 33.000
lignes.
Pensez-vous qu'il soit possible avec Excel de faire une
macro me permettant d'effectuer une recherche sur I et J
d'une même ligne.
Exemple : je veux chercher dans ma feuille s'il existe un
DURAND (colonne I) prénommé Pierre (colonne J)...
Bien sûr qu'il serait possible d'obtenir cela par un tri
sur I et J mais je ne peux déplacer les lignes pour des
raisons perso. Je crois que seule une macro pourrait me
permettre, sans déplacer quoi que ce soit, de faire ce
type de recherches, non ?
Merci de votre avis,
Christophe


.



Avatar
AV
Exemple succint avec plages nommées "Noms" et Prénoms"(commençant en ligne 2 -
la ligne 1 reservée aux en-têtes)

Sub zz_NomPrénom()
leNom = "DUPONT"
lePrénom = "Marcel"
On Error Resume Next
x = Evaluate("match(""" & leNom & """&""" & lePrénom & """,Noms&Prénoms,0)")
If Err.Number = 0 Then Rows(x + 1).Select
End Sub

AV
1 2 3