Fonction pour trouver la deuxième ligne avec un mot déclaré
andreea_94
Messages postés
1
Statut
Membre
-
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai besoin de trouver la deuxième ligne avec un mot déclaré sur une base donnée. J'ai reussi d'écrire le code pour identifier la première ligne avec le mot (par exemple ''sexe'') et maintenant j'ai besoin de trouver la prochaine ligne avec ce mot. Je dois prendre en compte le fait que la base de données inclut aussi des lignes vides. Ayant peu de connaissances en vba, s'il vous plaît, est-ce qu'il y a quelqu'un qui peut m'aider? Merci beaucoup :)
P.S. J'affiche ci-dessous mon code pour identifier la première ligne:
J'ai besoin de trouver la deuxième ligne avec un mot déclaré sur une base donnée. J'ai reussi d'écrire le code pour identifier la première ligne avec le mot (par exemple ''sexe'') et maintenant j'ai besoin de trouver la prochaine ligne avec ce mot. Je dois prendre en compte le fait que la base de données inclut aussi des lignes vides. Ayant peu de connaissances en vba, s'il vous plaît, est-ce qu'il y a quelqu'un qui peut m'aider? Merci beaucoup :)
P.S. J'affiche ci-dessous mon code pour identifier la première ligne:
Function premierc(premier_mot As String) As Long
Dim test As Boolean
Dim i As Long
i = 1
test = False
While test = False
If Trim(ActiveSheet.Cells(i, 2).Value) = premier_mot Then
premierc = i
test = True
Else
i = i + 1
End If
Wend
End Function
Sub testfunction()
Dim mot As String
Dim premierligne As Long
mot = InputBox("mot cherche")
premierligne = premierc(mot)
MsgBox ("premier ligne " &premierligne)
End Sub
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
A voir également:
- Fonction pour trouver la deuxième ligne avec un mot déclaré
- Fonction si et - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Trouver adresse mac - Guide
- Deuxieme ecran pc - Guide
- Partager photos en ligne - Guide
3 réponses
Bonjour tout le monde, bonne année
une approche un peu differente avec Find, Trim sur colonne et possibiltes: existe pas, une seule fois et enfin deux fois le mot cherché
une approche un peu differente avec Find, Trim sur colonne et possibiltes: existe pas, une seule fois et enfin deux fois le mot cherché
Sub test()
Dim mot As String
Dim premierligne As Variant, deuxieme As Variant
mot = InputBox("Mot cherché")
Call premierc(mot, premierligne, deuxieme)
MsgBox ("Mot recherché: " & mot & vbNewLine & "premiere ligne: " & premierligne & vbNewLine & "deuxieme ligne: " & deuxieme)
End Sub
'recherche ligne(s)
Sub premierc(premier_mot As String, premierligne As Variant, deuxieme As Variant)
Dim TColB, i As Long
With Worksheets("feuil1") 'nom de feuille a adapter
TColB = .Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row) 'mise en tableau colonne B
For i = LBound(TColB) To UBound(TColB)
TColB(i, 1) = Trim(TColB(i, 1)) 'sup espaces devant/derriere
Next i
.Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row) = TColB 'ecriture colonne B sans espaces devant/derriere
Nb = Application.CountIf(.Columns(2), premier_mot) 'nombre de fois mot dans colonne B
If Nb > 1 Then 'au moins deux fois
premierligne = 1
premierligne = .Columns(2).Find(premier_mot, .Cells(premierligne, 2), , xlWhole).Row 'recherche 1 iere ligne
deuxieme = .Columns(2).Find(premier_mot, .Cells(premierligne, 2), , xlWhole).Row 'recherche deuixeme ligne
ElseIf Nb = 1 Then 'une fois
premierligne = 1
premierligne = .Columns(2).Find(premier_mot, .Cells(premierligne, 2), , xlWhole).Row 'recherche 1iere ligne
deuxieme = "n'existe pas"
Else 'pas du tout
premierligne = "n'existe pas"
deuxieme = "n'existe pas"
End If
End With
End Sub
Bonjour,
Visiblement tu codes en VBA sous Excel
Donc... pour faire des recherches.. il ne faut pas utiliser de boucle... mais simplement utiliser la méthode FIND
Regarde ici :
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
Visiblement tu codes en VBA sous Excel
Donc... pour faire des recherches.. il ne faut pas utiliser de boucle... mais simplement utiliser la méthode FIND
Regarde ici :
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, suggestion:
ou bien ceci, avec un second paramètre indiquant l’occurrence à trouver:
Function secondm(mot As String) As Long
Dim test As Boolean, dejavu As Long
Dim i As Long
i = 1
test = False
dejavu = 0
While test = False
If Trim(ActiveSheet.Cells(i, 2).Value) = mot Then
dejavu = dejavu + 1
If dejavu = 2 Then
test = True
secondm = i
End If
End If
i = i + 1
Wend
End Function
ou bien ceci, avec un second paramètre indiquant l’occurrence à trouver:
Function vachercher(mot As String, occurrence As Long) As Long
Dim test As Boolean, dejavu As Long
Dim i As Long
i = 1
test = False
dejavu = 0
While test = False
If Trim(ActiveSheet.Cells(i, 2).Value) = mot Then
dejavu = dejavu + 1
If dejavu = occurrence Then
test = True
vachercher = i
End If
End If
i = i + 1
Wend
End Function