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

Fonction VBA .Find dans colonne cachée

4 réponses
Avatar
Michel41
Bonjour

Une macro recherchant une chaîne de caractères dans
les cellules d'une colonne fonctionne très bien :
.../...
' T est une liste de mots à identifier
'W1() est un variant
W1 = Split(T & Sep, Sep)
k = UBound(W1, 1) - 1
.../...
With ObjetRangeMaColonne
For i = 0 To k
If W1(i) > "" Then
Set Z = .Find(what:=W1(i), lookAt:=xlWhole, After:=.Rows(1),
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues,
MatchCase:=False, SearchFormat:=False)
If Not Z Is Nothing Then
h = h + 1
j = Z.Row
.../...
If h = 1 Then W3 = W1(i) Else W3 = W3 & Sep & W1(i)
Else
R = True
End If
End If
Next i
End With
.../...
' T devient la liste des mots identifiés
T=W3

Mais si je masque ObjetRangeMaColonne
dans le tableur, cette macro ne reconnait plus
rien alors que d'autres valeurs avec .value sont
parfaitement lues dans d'autres colonnes
cachées.
Bug avec .Find dans ce contexte?
Origine ?

Merci.@+

4 réponses

Avatar
isabelle
bonjour Michel,

j'ai fait le test suivant et je n'ai pas eu ce problème,

Sub Macro1()
Dim ObjetRangeMaColonne As Range
Set ObjetRangeMaColonne = Columns("A:A")
ObjetRangeMaColonne.EntireColumn.Hidden = True
With ObjetRangeMaColonne
Set z = .Find(what:="zaza", lookAt:=xlWhole, After:=.Rows(1))
End With
If Not z Is Nothing Then MsgBox z.Address
End Sub

as tu vérifié la valeur de W1(i) ?

isabelle




Bonjour

Une macro recherchant une chaîne de caractères dans
les cellules d'une colonne fonctionne très bien :
.../...
' T est une liste de mots à identifier
'W1() est un variant
W1 = Split(T & Sep, Sep)
k = UBound(W1, 1) - 1
.../...
With ObjetRangeMaColonne
For i = 0 To k
If W1(i) > "" Then
Set Z = .Find(what:=W1(i), lookAt:=xlWhole, After:=.Rows(1),
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues,
MatchCase:úlse, SearchFormat:úlse)
If Not Z Is Nothing Then
h = h + 1
j = Z.Row
.../...
If h = 1 Then W3 = W1(i) Else W3 = W3 & Sep & W1(i)
Else
R = True
End If
End If
Next i
End With
.../...
' T devient la liste des mots identifiés
T=W3

Mais si je masque ObjetRangeMaColonne
dans le tableur, cette macro ne reconnait plus
rien alors que d'autres valeurs avec .value sont
parfaitement lues dans d'autres colonnes
cachées.
Bug avec .Find dans ce contexte?
Origine ?

Merci.@+


Avatar
Michel41
Merci
J'ai mis des "Debug.?" partout
et est même fait la recherche sur Mot
avec Mot=trim(cstr(W1(i)))

OK si la colonne est visible
KO si la colonne est invisible
KO qqs la méthode d'invisibilité
(par VBA, souris, sélection de paramétrage)
Redevient OK comme par enchantement
ensuite quand la colonne redevient visible !!!!!

Ce n'est pas le seul problème que j'ai eu avec
.Find : mes mots sont numériques et pour que
cela fonctionne déjà en mode VISIBLE sans être
embêté par le format ou le type numérique
(voir confusion même avec Date) je précède
le nombre par une lettre comme :
"T1234567891011"

Je vais recopier le programme proposé sur une
feuille insérée pour le tester
En attendant si d'autres idées, je suis toujours preneur

Merci@+

"isabelle" a écrit dans le message de news:

bonjour Michel,

j'ai fait le test suivant et je n'ai pas eu ce problème,

Sub Macro1()
Dim ObjetRangeMaColonne As Range
Set ObjetRangeMaColonne = Columns("A:A")
ObjetRangeMaColonne.EntireColumn.Hidden = True
With ObjetRangeMaColonne
Set z = .Find(what:="zaza", lookAt:=xlWhole, After:=.Rows(1))
End With
If Not z Is Nothing Then MsgBox z.Address
End Sub

as tu vérifié la valeur de W1(i) ?

isabelle




Bonjour

Une macro recherchant une chaîne de caractères dans
les cellules d'une colonne fonctionne très bien :
.../...
' T est une liste de mots à identifier
'W1() est un variant
W1 = Split(T & Sep, Sep)
k = UBound(W1, 1) - 1
.../...
With ObjetRangeMaColonne
For i = 0 To k
If W1(i) > "" Then
Set Z = .Find(what:=W1(i), lookAt:=xlWhole,
After:=.Rows(1),
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues,
MatchCase:úlse, SearchFormat:úlse)
If Not Z Is Nothing Then
h = h + 1
j = Z.Row
.../...
If h = 1 Then W3 = W1(i) Else W3 = W3 & Sep & W1(i)
Else
R = True
End If
End If
Next i
End With
.../...
' T devient la liste des mots identifiés
T=W3

Mais si je masque ObjetRangeMaColonne
dans le tableur, cette macro ne reconnait plus
rien alors que d'autres valeurs avec .value sont
parfaitement lues dans d'autres colonnes
cachées.
Bug avec .Find dans ce contexte?
Origine ?

Merci.@+




Avatar
Michel41
RE
J'ai essayé

Sub Toto()
'zaza écrit en ligne 10 colonne 1
Dim ObjetRangeMaColonne As Range
Dim Z As Range
Set ObjetRangeMaColonne = Columns("A:A")
ObjetRangeMaColonne.EntireColumn.Hidden = True
With ObjetRangeMaColonne
Set Z = .Find(what:="zaza", lookAt:=xlWhole, After:=.Rows(1))
End With
If Not Z Is Nothing Then MsgBox Z.Address
End Sub

Cela ne fonctionne que quand je met ' (REM)
devant la ligne rendant invisible !

Merci
Si idée toujours preneur
@+

"isabelle" a écrit dans le message de news:

bonjour Michel,

j'ai fait le test suivant et je n'ai pas eu ce problème,

Sub Macro1()
Dim ObjetRangeMaColonne As Range
Set ObjetRangeMaColonne = Columns("A:A")
ObjetRangeMaColonne.EntireColumn.Hidden = True
With ObjetRangeMaColonne
Set z = .Find(what:="zaza", lookAt:=xlWhole, After:=.Rows(1))
End With
If Not z Is Nothing Then MsgBox z.Address
End Sub

as tu vérifié la valeur de W1(i) ?

isabelle




Bonjour

Une macro recherchant une chaîne de caractères dans
les cellules d'une colonne fonctionne très bien :
.../...
' T est une liste de mots à identifier
'W1() est un variant
W1 = Split(T & Sep, Sep)
k = UBound(W1, 1) - 1
.../...
With ObjetRangeMaColonne
For i = 0 To k
If W1(i) > "" Then
Set Z = .Find(what:=W1(i), lookAt:=xlWhole,
After:=.Rows(1),
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues,
MatchCase:úlse, SearchFormat:úlse)
If Not Z Is Nothing Then
h = h + 1
j = Z.Row
.../...
If h = 1 Then W3 = W1(i) Else W3 = W3 & Sep & W1(i)
Else
R = True
End If
End If
Next i
End With
.../...
' T devient la liste des mots identifiés
T=W3

Mais si je masque ObjetRangeMaColonne
dans le tableur, cette macro ne reconnait plus
rien alors que d'autres valeurs avec .value sont
parfaitement lues dans d'autres colonnes
cachées.
Bug avec .Find dans ce contexte?
Origine ?

Merci.@+




Avatar
papou
Bonjour
Il faut identifier "complètement" ton Range en désignant donc son
propriétaire :
Set ObjetRangeMaColonne = Worksheets("Feuil1").Columns("A:A")
Cordialement
Pascal

"Michel41" a écrit dans le message de news:
4204b5ba$0$18862$
RE
J'ai essayé

Sub Toto()
'zaza écrit en ligne 10 colonne 1
Dim ObjetRangeMaColonne As Range
Dim Z As Range
Set ObjetRangeMaColonne = Columns("A:A")
ObjetRangeMaColonne.EntireColumn.Hidden = True
With ObjetRangeMaColonne
Set Z = .Find(what:="zaza", lookAt:=xlWhole, After:=.Rows(1))
End With
If Not Z Is Nothing Then MsgBox Z.Address
End Sub

Cela ne fonctionne que quand je met ' (REM)
devant la ligne rendant invisible !

Merci
Si idée toujours preneur
@+

"isabelle" a écrit dans le message de news:

bonjour Michel,

j'ai fait le test suivant et je n'ai pas eu ce problème,

Sub Macro1()
Dim ObjetRangeMaColonne As Range
Set ObjetRangeMaColonne = Columns("A:A")
ObjetRangeMaColonne.EntireColumn.Hidden = True
With ObjetRangeMaColonne
Set z = .Find(what:="zaza", lookAt:=xlWhole, After:=.Rows(1))
End With
If Not z Is Nothing Then MsgBox z.Address
End Sub

as tu vérifié la valeur de W1(i) ?

isabelle




Bonjour

Une macro recherchant une chaîne de caractères dans
les cellules d'une colonne fonctionne très bien :
.../...
' T est une liste de mots à identifier
'W1() est un variant
W1 = Split(T & Sep, Sep)
k = UBound(W1, 1) - 1
.../...
With ObjetRangeMaColonne
For i = 0 To k
If W1(i) > "" Then
Set Z = .Find(what:=W1(i), lookAt:=xlWhole,
After:=.Rows(1),
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, LookIn:=xlValues,
MatchCase:úlse, SearchFormat:úlse)
If Not Z Is Nothing Then
h = h + 1
j = Z.Row
.../...
If h = 1 Then W3 = W1(i) Else W3 = W3 & Sep & W1(i)
Else
R = True
End If
End If
Next i
End With
.../...
' T devient la liste des mots identifiés
T=W3

Mais si je masque ObjetRangeMaColonne
dans le tableur, cette macro ne reconnait plus
rien alors que d'autres valeurs avec .value sont
parfaitement lues dans d'autres colonnes
cachées.
Bug avec .Find dans ce contexte?
Origine ?

Merci.@+