Chercher un mot dans une ligne

Fermé
zakaria.mouk Messages postés 5 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 11 juin 2015 - 11 juin 2015 à 12:03
zakaria.mouk Messages postés 5 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 11 juin 2015 - 11 juin 2015 à 17:37
Bonjour à tous,
Je viens vers vous pour demander de l'aide, j'ai besoin de code d' un macro qui permet de parcourir la 3ème ligne(qui contient les titres des colonnes), et vérifier chaque cellule (ou titre) s'elle contient le mot "value", si oui, le macro parcourt la colonne qui correspond a cette cellule.
j'ai besoin de ce macro pour optimiser la recherche, voici le code que je dois appliquer sur les cellules de la colonnes ou se trouve le mot "Value".
dans ce code dessous, Range("Y5:AR5000") correspond à la plage qui contient les colonnes dont le titre contient le mot "value".
Dim CurCell As Object
For Each CurCell In Range("Y5:AR5000")
If (CurCell.Value Like "*([a-zA-Z])*" Or CurCell.Value Like "*[\.|/|°]*") And Not IsNumeric(CurCell.Offset(0, 1).Value) Then
CurCell.Offset(0, 1).Select 'Select the error
CurCell.Offset(0, 1).Interior.ColorIndex = 0
MsgBox "Error unit at " & CurCell.Offset(0,1).Value & " in cell: " & CurCell.Offset(0, 1).Address
End If
Next

J'espère que vous avez bien ma demande, sinon n'hésitez pas à me demander.
Merci à vous.

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 juin 2015 à 14:27
Bojour
actuellement avec like "*([a-zA-Z])*" tu testes si tu as au moins 1 lettre de l'alphabet. or dans ta demande tu écris que tu teste si il existe le mot "value" ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 11/06/2015 à 14:52
Bonjour,

michel_m: le test "value" est pour la ligne 3 de Y3:AR3, c'est ce que j'ai compris

Sub test()
    Dim CurCell As Object
    Dim Plage As Range
    Dim col As Range
    'Plage de titre colonnes
    Set Plage = Range("Y3:AR3")
    'boucle sur plage de tire colonne
    For Each col In Plage
        'test si value dans titre
        If col Like "*value*" Then
            'cherche le nom (la lettre) de la colonne
            Colonne = Split(Cells(8, col.Column).Address, "$")(1)
            'boucle sur la colonne
            For Each CurCell In Range(Colonne & "5:" & Colonne & "5000")
                If (CurCell.Value Like "*([a-zA-Z])*" Or CurCell.Value Like "*[\.|/|°]*") And Not IsNumeric(CurCell.Offset(0, 1).Value) Then
                    CurCell.Offset(0, 1).Select 'Select the error
                    CurCell.Offset(0, 1).Interior.ColorIndex = 0
                    MsgBox "Error unit at " & CurCell.Offset(0, 1).Value & " in cell: " & CurCell.Offset(0, 1).Address
                End If
            Next CurCell
        End If
    Next col
End Sub
0
zakaria.mouk Messages postés 5 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 11 juin 2015
11 juin 2015 à 15:53
Rebonjour,
Donc je ne suis pas resté les bras croisée,j'ai cherché et j'ai trouvé une solution et je la partage avec vous
Sub TestUnits2()
'
' TestUnits2 Macro
'
'Rows("3:3").Select
Dim CurCell As Object
For Each CurCell In Range("A3:CP3")
For i = 1 To 20
If CurCell.Value = "Charact" & i Then
CurCell.Columns.Select
'ActiveCell.Column.Interior.ColorIndex = 10
MsgBox "Value Find in :" & CurCell.Rows.Address
End If
Next i
Next
End Sub

Donc, voila comme vous voyez ce programme sélectionne la colonne ou il se trouve le mot "Charact1", "charact2"...ect, mais ce n'est pas de tout fini, parce que il faut ensuite parcourir toute la colonne ou il se trouve ce mot (par exemple: charact 1) ligne par ligne et vérifier la condition, je pense qu'il va se ressembler à ça
Sub TestUnits2()
'
' TestUnits2 Macro
'
'Rows("3:3").Select
Dim CurCell As Object
Dim cell As Variant

For Each CurCell In Range("A3:CP3")
For i = 1 To 20
If CurCell.Value = "Charact" & i Then
Colonne = CurCell.Columns.Select
'ActiveCell.Column.Interior.ColorIndex = 10
'MsgBox "Value Find in :" & CurCell.Columns.Address
For Each cell In Colonne
If (cell.Value Like "*([a-zA-Z])*" Or cell.Value Like "*[\.|/|°]*") And Not IsNumeric(cell.Offset(0, 1).Value) Then
cell.Offset(0, 1).Select 'Select the error
cell.Offset(0, 1).Interior.ColorIndex = 0
MsgBox "Error unit at " & cell.Value & " in cell: " & cell.Offset(0, 1).Address
'ElseIf then
End If
Next
End If
Next i
Next
End Sub

Mais ça ne marche pas, si vous avez une idée n'hésitez pas.
Merci
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
11 juin 2015 à 16:00
Re,

Regardez au moins ce que j'ai ecrit !!!!!
0
zakaria.mouk Messages postés 5 Date d'inscription mardi 9 juin 2015 Statut Membre Dernière intervention 11 juin 2015
11 juin 2015 à 17:37
La solution :-D
Sub TestUnity()
'
' TestUnity Macro
'
Dim CurCell As Object
Dim rCell As Range


For Each CurCell In Range("A3:CP3")
For i = 1 To 20
If CurCell.Value = "Charact" & i Then
'Sélection de cellules vers le bas depuis la cellule active.
'Range(CurCell, CurCell.End(xlDown)).Select

For Each rCell In Range(CurCell, CurCell.End(xlDown))
If confition Then
Instruction 1
Instruction 1
End If
Next
End If
Next i
Next
'
End Sub
0