VBA - plage de recherche -cell find what

bonjour ,

j'ai un petit souci avec un bout de code ( je ne peux pas mettre le fichier car il s'agit d'une module qui est appeler par un autre module ect ....

je souhaite chercher le mot "Nom " a partir de la colonne B ( en gros j'ai besoin d'exclure la colonne A )

le code fonctionne bien et j'aimerai qu'il n’évolue pas trop ( dans la mesure du possible ) juste y ajouter une fonction plage

ce que fait ce module , il cherche le mot " Nom " et ensuite je prend la cellule la 5 imie cellule a droite et l'active pour lui affecter la valeur ' G" que j'utilise ensuite

Cells.Find(What:=Nom, After:=ActiveCell, LookIn:=xlValues, LookAt:= _

xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _

False, SearchFormat:=False).Activate

ActiveCell.Offset(0, 5).Select

' Range("a20").Select

Sub Gs(Nom As String, Lien As String)

    Dim Cellule As Range
    Dim Lig As Long, G As String

    Sheets("Temp2").Select
    Cells.ClearContents
    With Sheets("Temp2")
        Lig = .Cells(.Rows.Count, "B").End(xlUp).Row
        .Cells(Lig + 2, 1) = Nom
        .Cells(Lig + 2, 1).Font.ColorIndex = 3
        .Cells(Lig + 2, 1).Font.Bold = True
        With .QueryTables.Add( _
             Connection:="URL;" & Lien, _
             Destination:=.Cells(Lig + 3, 1))
            .BackgroundQuery = False
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingAll
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = True
            .WebDisableDateRecognition = True
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
            .SaveData = True
        End With
    End With

    Cells.Find(What:=Nom, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
                               xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
                               False, SearchFormat:=False).Activate
                               ActiveCell.Offset(0, 5).Select
 '   Range("a20").Select
    G = ActiveCell.Value

end sub

merci d'avance pour votre aide

Bonjour,

Essaie avec

    Set C = Range("B1", Cells(Rows.Count, Columns.Count)).Find(Nom, , xlValues, xlPart)
    If Not C Is Nothing Then G = C.Offset(0, 5).Value

A+

bonsoir

simple et redoutable ta formule semble convenir ( je dis semble car je ne peux pas effectuer ts les test que je souhaiterais pour le moment ( il semble que je dois corriger un bug ( trim nom ou une connerie du genre )

merci

le code fonctionne bien

Set C = Range("B1", Cells(Rows.Count, Columns.Count)).Find(Nom, , xlValues, xlPart)

If Not C Is Nothing Then G = C.Offset(0, 5).Value

mais si au lieu de prendre par defaut la 5 imie case ( a droite )

je souhaite prendre la colonne ou le mot "cumul" est present en intitulé ( tableau )

Et pourquoi ne pas chercher directement la cellule qui contient l'intitulé "cumul" ?

A+

bonjour

pour te répondre frangy

je me suis mal fait comprendre ( cela m'apprendra a ne pas vouloir mettre de fichier )

je me repette mais il s'agit d' une macro imbriquer dans d'autres !

si dans la procédure le nom rechercher est "tintin" je dois affecter a "G" le cumul de tintin

la ligne de recherche dépend du " nom " ( ce que fais tres bien ton bout de code )

par contre pour la colonne ( il s'agit souvent de la 5 cellule a droite du " nom" mais pas tjs , c'est pourquoi je préfère chercher le mot " "cumul " au lieu de prendre simplement la 5 cellule a droite du nom

le mot cumul me donnera la colonne a prendre en compte pour affecter ma valeurs G

ligne + colonne = cellule qui va bien ( "cumul de tintin" dans l'exemple ici )

voici le tableau >

Nom .................... coef...points ..... cumul

black.........................3.........6............... 18

mortimer................ 5.........3...............12

tintin..........................4.........3...............15

milou........................4.........2...............10

Bien, alors ...

    Set C = Range("B1", Cells(Rows.Count, Columns.Count)).Find(Nom, , xlValues, xlPart)
    If Not C Is Nothing Then
        Set D = Range("B1", Cells(Rows.Count, Columns.Count)).Find("Cumul", , xlValues, xlPart)
        If Not D Is Nothing Then
            G = Cells(C.Row, D.Column).Value
        End If
    End If

A+

nickel merci

je pensais a un truc un peu dans ke genre mais je n'avais pas pense a condition 1 rempli passe a condition 2

merci frangy !!!

ras

Rechercher des sujets similaires à "vba plage recherche find"