Fonction pour trouver la deuxième ligne avec un mot déclaré
Fermé
andreea_94
Messages postés
1
Date d'inscription
lundi 1 janvier 2018
Statut
Membre
Dernière intervention
1 janvier 2018
-
Modifié le 1 janv. 2018 à 17:55
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 1 janv. 2018 à 18:27
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 1 janv. 2018 à 18:27
A voir également:
- Fonction pour trouver la deuxième ligne avec un mot déclaré
- Fonction si et - Guide
- Aller à la ligne excel - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Trouver adresse mac - Guide
- Trouver un lieu avec coordonnées gps - Guide
3 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 710
1 janv. 2018 à 18:27
1 janv. 2018 à 18:27
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
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
1 janv. 2018 à 17:57
1 janv. 2018 à 17:57
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
23352
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 novembre 2024
Ambassadeur
1 554
Modifié le 1 janv. 2018 à 18:01
Modifié le 1 janv. 2018 à 18:01
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