Fonction pour trouver la deuxième ligne avec un mot déclaré
andreea_94
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 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
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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