OVH Cloud OVH Cloud

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

3 réponses

1 2
Avatar
ManBas
ça marche Camille !
Merci beaucoup!

Puisqu'on y est pourrais-tu apporter une correction à la grammaire de ma
boucle?
[] ne marche pas, range non plus.
Est-ce que je ne peux pas du tout l'écrire comme ça?


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

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
















Avatar
Ellimac
Attention à Valtext et Valtest
Je ne maîtrise pas l'utilisation des [] donc j'utilise Range :

Sub cherche_valeur()
Valtext = "bonjour"
Range("A65536").End(xlUp).Offset(-1, 0).Select
ligne = ActiveCell.Row
ad = ActiveCell.Address
ligneHuit = ligne - 8 ' l'avant dernier bonjour ne peut pas etre au-dela de
Range("A" & ligneHuit).Select
adHuit = ActiveCell.Address
MsgBox " plage entre " & ad & ":" & adHuit
For Each c In Range(ad, adHuit) 'et c'est là que ce n'est pas bien écrit !!!
et
If c Like Valtext Then
c.Select
Exit Sub
End If
Next
End Sub

Camille

"ManBas" a écrit dans le message de news:
%
ça marche Camille !
Merci beaucoup!

Puisqu'on y est pourrais-tu apporter une correction à la grammaire de ma
boucle?
[] ne marche pas, range non plus.
Est-ce que je ne peux pas du tout l'écrire comme ça?


"Elliac" a écrit dans le message de
news:
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




















Avatar
ManBas
Merci beaucoup et à bientôt.

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

Attention à Valtext et Valtest
Je ne maîtrise pas l'utilisation des [] donc j'utilise Range :

Sub cherche_valeur()
Valtext = "bonjour"
Range("A65536").End(xlUp).Offset(-1, 0).Select
ligne = ActiveCell.Row
ad = ActiveCell.Address
ligneHuit = ligne - 8 ' l'avant dernier bonjour ne peut pas etre au-dela
de
Range("A" & ligneHuit).Select
adHuit = ActiveCell.Address
MsgBox " plage entre " & ad & ":" & adHuit
For Each c In Range(ad, adHuit) 'et c'est là que ce n'est pas bien écrit
!!! et
If c Like Valtext Then
c.Select
Exit Sub
End If
Next
End Sub

Camille

"ManBas" a écrit dans le message de news:
%
ça marche Camille !
Merci beaucoup!

Puisqu'on y est pourrais-tu apporter une correction à la grammaire de ma
boucle?
[] ne marche pas, range non plus.
Est-ce que je ne peux pas du tout l'écrire comme ça?


"Elliac" a écrit dans le message de
news:
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