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

Findnext ne prend pas en considération le format des cellules ?

5 réponses
Avatar
Daniel.C
Bonjour.

Je cherche à sélectionner les cellules fusionnées et ayant un renvoi à la
ligne automatique. J'ai le code suivant :

With Application.FindFormat
.WrapText = True
.MergeCells = True
End With
Set Cel = sh.Cells.Find("*", SearchFormat:=True)
...
Set Cel = Cells.FindNext(Cel)

Je trouve toutes les cellules remplies, quel que soit le paramétrage initié
en début de procédure (sauf la première, trouvée par "find"). Quand
j'exécute la commande manuellement, les deux options sont bien positionnées.
Il semberait que "findnext" ne reconnaisse pas les options spécifiées, et
pourtant, l'enregistreur de macros donne la même syntaxe, à ceci près
qu'elle sélectionne les cellules.
Merci par avance.
Daniel

5 réponses

Avatar
michdenis
Je n'ai rien testé....avec FindFormat

Mais rien ne t'empêche d'utiliser ceci :


Set Cel = sh.Cells.Find("*", SearchFormat:=True)

'Et au lieu de findnext .

Set Cel = sh.Cells.Find(What:="*", After:Îl, SearchFormat:=True)


N.B. Lorsque l'on déclare le "prompt" pour un argument,
on le déclare pour chacun des arguments de la méthode



"Daniel.C" a écrit dans le message de news:

Bonjour.

Je cherche à sélectionner les cellules fusionnées et ayant un renvoi à la
ligne automatique. J'ai le code suivant :

With Application.FindFormat
.WrapText = True
.MergeCells = True
End With
Set Cel = sh.Cells.Find("*", SearchFormat:=True)
...
Set Cel = Cells.FindNext(Cel)

Je trouve toutes les cellules remplies, quel que soit le paramétrage initié
en début de procédure (sauf la première, trouvée par "find"). Quand
j'exécute la commande manuellement, les deux options sont bien positionnées.
Il semberait que "findnext" ne reconnaisse pas les options spécifiées, et
pourtant, l'enregistreur de macros donne la même syntaxe, à ceci près
qu'elle sélectionne les cellules.
Merci par avance.
Daniel
Avatar
Daniel.C
Bonjour et merci de ta réponse. C'est ce que j'ai fait, mais je voulais être
sûr. C'est quand même bizarre cette syntaxe de l'enregistreur... Quoique je
ne l'aie pas testée...

--
Cordialement.
Daniel
"michdenis" a écrit dans le message de news:

Je n'ai rien testé....avec FindFormat

Mais rien ne t'empêche d'utiliser ceci :


Set Cel = sh.Cells.Find("*", SearchFormat:=True)

'Et au lieu de findnext .

Set Cel = sh.Cells.Find(What:="*", After:Îl, SearchFormat:=True)


N.B. Lorsque l'on déclare le "prompt" pour un argument,
on le déclare pour chacun des arguments de la méthode



"Daniel.C" a écrit dans le message de news:

Bonjour.

Je cherche à sélectionner les cellules fusionnées et ayant un renvoi à la
ligne automatique. J'ai le code suivant :

With Application.FindFormat
.WrapText = True
.MergeCells = True
End With
Set Cel = sh.Cells.Find("*", SearchFormat:=True)
...
Set Cel = Cells.FindNext(Cel)

Je trouve toutes les cellules remplies, quel que soit le paramétrage
initié
en début de procédure (sauf la première, trouvée par "find"). Quand
j'exécute la commande manuellement, les deux options sont bien
positionnées.
Il semberait que "findnext" ne reconnaisse pas les options spécifiées, et
pourtant, l'enregistreur de macros donne la même syntaxe, à ceci près
qu'elle sélectionne les cellules.
Merci par avance.
Daniel




Avatar
michdenis
Je ne sais pas ce que tu tentes de faires, mais voici un exemple
où tu peux substituer un format de cellule par un autre ...


Sub ReplaceFormats()

Dim oCellFindFormat As CellFormat
Dim oCellReplaceFormat As CellFormat
Dim rngReplace As Boolean, sMessage As String

'Define variables for Find and Replace formats
Set oCellFindFormat = Application.FindFormat
Set oCellReplaceFormat = Application.ReplaceFormat

'Set the Search criteria for the Find Formats
With oCellFindFormat
.Clear
.Font.Name = "Arial"
.Interior.Color = vbRed
End With

'Set the Replace criteria for the Replace Formats
With oCellReplaceFormat
.Clear
.Font.Name = "Arial"
.Interior.ColorIndex = 25
End With
'Perform the replace
Me.UsedRange.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True

'Reset the Find and Replace formats
oCellFindFormat.Clear
oCellReplaceFormat.Clear

End Sub





"Daniel.C" a écrit dans le message de news:

Bonjour et merci de ta réponse. C'est ce que j'ai fait, mais je voulais être
sûr. C'est quand même bizarre cette syntaxe de l'enregistreur... Quoique je
ne l'aie pas testée...

--
Cordialement.
Daniel
"michdenis" a écrit dans le message de news:

Je n'ai rien testé....avec FindFormat

Mais rien ne t'empêche d'utiliser ceci :


Set Cel = sh.Cells.Find("*", SearchFormat:=True)

'Et au lieu de findnext .

Set Cel = sh.Cells.Find(What:="*", After:Îl, SearchFormat:=True)


N.B. Lorsque l'on déclare le "prompt" pour un argument,
on le déclare pour chacun des arguments de la méthode



"Daniel.C" a écrit dans le message de news:

Bonjour.

Je cherche à sélectionner les cellules fusionnées et ayant un renvoi à la
ligne automatique. J'ai le code suivant :

With Application.FindFormat
.WrapText = True
.MergeCells = True
End With
Set Cel = sh.Cells.Find("*", SearchFormat:=True)
...
Set Cel = Cells.FindNext(Cel)

Je trouve toutes les cellules remplies, quel que soit le paramétrage
initié
en début de procédure (sauf la première, trouvée par "find"). Quand
j'exécute la commande manuellement, les deux options sont bien
positionnées.
Il semberait que "findnext" ne reconnaisse pas les options spécifiées, et
pourtant, l'enregistreur de macros donne la même syntaxe, à ceci près
qu'elle sélectionne les cellules.
Merci par avance.
Daniel




Avatar
michdenis
De façon plus précise, lors d'une recherche "Find", seulement
ces paramètres sont enregistrés et retenus pour une recherche
subséquente :

LookIn, LookAt, SearchOrder et MatchByte... ce qui explique que
l'on doive définir à chaque fois (recherche) le paramètre
SearchFormat:=True de la méthode Find. Cependant, il ne fait
pas parti de la thode FindNext ...conséquemment, il n'y a aucune
façon de le définir saut si ce n'est la méthode utilisée dans mon
message antérieure.
Avatar
Daniel.C
Merci de ces précisions. C'est déroutant, parce que ça ne fonctionne pas
comme la commande Excel, quand tu fais une recherche et que tu cliques sur
"Suivant", tu penses à "FindNext"...mais, non.
Encore merci.
--
Cordialement.
Daniel
"michdenis" a écrit dans le message de news:

De façon plus précise, lors d'une recherche "Find", seulement
ces paramètres sont enregistrés et retenus pour une recherche
subséquente :

LookIn, LookAt, SearchOrder et MatchByte... ce qui explique que
l'on doive définir à chaque fois (recherche) le paramètre
SearchFormat:=True de la méthode Find. Cependant, il ne fait
pas parti de la thode FindNext ...conséquemment, il n'y a aucune
façon de le définir saut si ce n'est la méthode utilisée dans mon
message antérieure.