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

Selectionner l'avant-dernière cellule de la colonne qui contient le texte

13 réponses
Avatar
ManBas
Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions

10 réponses

1 2
Avatar
MichDenis
En supposant que j'ai compris...
Tu remplaces A:A par la colonne de ton application..

Sub test()
Dim DerLig As Long
DerLig = Range("A:A").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("A" & DerLig).Offset(-1).Select
End Sub




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

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions
Avatar
Elliac
Bonjour

Sub Toto()
Dim n As Integer
Range("a1").Select
n = Application.CountIf(Columns(1), "bonjour")
For cpt = 1 To n - 1
Cells.Find(What:="bonjour", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Next
End Sub

Camille

"ManBas" wrote:

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions





Avatar
ManBas
Bonjour MichDenis,
Merci de ton aide.
Ben ça le fait pas...
ça sélectionne l'avant-dernière ligne tout court (j'ai remplacé * par le
texte)

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

En supposant que j'ai compris...
Tu remplaces A:A par la colonne de ton application..

Sub test()
Dim DerLig As Long
DerLig = Range("A:A").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Range("A" & DerLig).Offset(-1).Select
End Sub




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

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre les
2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions






Avatar
ManBas
Merci Camille,
Et non plus.
Il reste des tas de "bonjour" plus bas dans la colonne.


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

Bonjour

Sub Toto()
Dim n As Integer
Range("a1").Select
n = Application.CountIf(Columns(1), "bonjour")
For cpt = 1 To n - 1
Cells.Find(What:="bonjour", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Next
End Sub

Camille

"ManBas" wrote:

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la
dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre
les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions








Avatar
MichDenis
Si dans ta dernière cellule, il y a toujours le mot "Bonjour"
remplace dans la procédure : What:="*" par What:="Bonjour"
Avatar
Ellimac
Tu indiques dans ton message que la dernière cellule de la colonne A
contient ton libellé et que tu veux atteindre l'avant dernière cellule
contenant ce libellé !!!

Camille

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

Merci Camille,
Et non plus.
Il reste des tas de "bonjour" plus bas dans la colonne.


"Elliac" a écrit dans le message de
news:
Bonjour

Sub Toto()
Dim n As Integer
Range("a1").Select
n = Application.CountIf(Columns(1), "bonjour")
For cpt = 1 To n - 1
Cells.Find(What:="bonjour", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Next
End Sub

Camille

"ManBas" wrote:

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la
dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre
les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions












Avatar
ManBas
En regardant la base, il n'y a pas plus de 8 lignes entre le dernier et
l'avant dernier "bonjour".
Donc on peut peut-être faire une boucle sur une plage de cellules qui
commencerait au-dessus du dernier "bonjour": la boucle va forcément
s'arreter sur l'avant-dernier !
Mais j'ai un problème de "grammaire" VBA:

Sub cherche_valeur()
Dim Valtext As String
Dim ligne
Dim ad
Dim adHuit
Valtext="bonjour"
Range("A65536").End(xlUp).Offset(-1, 0).Select 'on se met sur la cellule
au-dessus du dernier bonjour
ligne = ActiveCell.Row
ad = ActiveCell.Address
ligneHuit = ligne - 8 ' l'avant dernier bonjour ne peut pas etre au-dela de
8 lignes
Range("A" & ligneHuit).Select
adHuit = ActiveCell.Address
MsgBox " plage entre " & ad & ":" & adHuit
For Each c In [ad:adHuit] 'et c'est là que ce n'est pas bien écrit !!! et
que ça plante !!!
If c Like Valtest Then
c.Select
Exit Sub
End If
Next

Qu'en pensez-vous ?

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

Bonjour

Sub Toto()
Dim n As Integer
Range("a1").Select
n = Application.CountIf(Columns(1), "bonjour")
For cpt = 1 To n - 1
Cells.Find(What:="bonjour", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Next
End Sub

Camille

"ManBas" wrote:

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la
dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre
les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions








Avatar
ManBas
C'était fait. J'ai envoyé un message entre temps.
"MichDenis" a écrit dans le message de news:
%
Si dans ta dernière cellule, il y a toujours le mot "Bonjour"
remplace dans la procédure : What:="*" par What:="Bonjour"





Avatar
ManBas
Oui.
?
J'ai envoyé un autre message dans l'intervalle, avec un essai par une
boucle, mais ma "grammaire" n'est pas bonne!

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

Tu indiques dans ton message que la dernière cellule de la colonne A
contient ton libellé et que tu veux atteindre l'avant dernière cellule
contenant ce libellé !!!

Camille

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

Merci Camille,
Et non plus.
Il reste des tas de "bonjour" plus bas dans la colonne.


"Elliac" a écrit dans le message de
news:
Bonjour

Sub Toto()
Dim n As Integer
Range("a1").Select
n = Application.CountIf(Columns(1), "bonjour")
For cpt = 1 To n - 1
Cells.Find(What:="bonjour", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Next
End Sub

Camille

"ManBas" wrote:

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la
dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi
le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre
les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions

















Avatar
Elliac
Bonjour,

Une boucle de type compteur devrait suffire :
Sub Test()
Range("A65536").End(xlUp).Offset(-1, 0).Select
For cpt = 1 To 8
If ActiveCell = "bonjour" Then End
ActiveCell.Offset(-1).Select
Next
End Sub

Camille

"ManBas" wrote:

En regardant la base, il n'y a pas plus de 8 lignes entre le dernier et
l'avant dernier "bonjour".
Donc on peut peut-être faire une boucle sur une plage de cellules qui
commencerait au-dessus du dernier "bonjour": la boucle va forcément
s'arreter sur l'avant-dernier !
Mais j'ai un problème de "grammaire" VBA:

Sub cherche_valeur()
Dim Valtext As String
Dim ligne
Dim ad
Dim adHuit
Valtext="bonjour"
Range("A65536").End(xlUp).Offset(-1, 0).Select 'on se met sur la cellule
au-dessus du dernier bonjour
ligne = ActiveCell.Row
ad = ActiveCell.Address
ligneHuit = ligne - 8 ' l'avant dernier bonjour ne peut pas etre au-dela de
8 lignes
Range("A" & ligneHuit).Select
adHuit = ActiveCell.Address
MsgBox " plage entre " & ad & ":" & adHuit
For Each c In [ad:adHuit] 'et c'est là que ce n'est pas bien écrit !!! et
que ça plante !!!
If c Like Valtest Then
c.Select
Exit Sub
End If
Next

Qu'en pensez-vous ?

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

Bonjour

Sub Toto()
Dim n As Integer
Range("a1").Select
n = Application.CountIf(Columns(1), "bonjour")
For cpt = 1 To n - 1
Cells.Find(What:="bonjour", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
Next
End Sub

Camille

"ManBas" wrote:

Bonjour à tous,
Dans une table-base de données, après la fermeture du userform la
dernière
cellule de la colonne A contient toujours le texte "bonjour" (par ex).
Je voudrais sélectionner l'avant-dernière cellule qui contienne aussi le
texte "bonjour" en sachant qu'il n'y a pas de séquence régulière entre
les 2
cellules.
Comment l'écrire en VBA?
Merci de vos suggestions













1 2