Lecture et écriture d'une sous chaine de caractère

Bonjour,

Je vous explique ce que je souhaite réaliser:

j'aimerais prendre une partie de la donnée contenu dans la feuille "écriture" (Line Name = Line1, en D5 ), et la mettre dans la feuille "mise en forme finale" dans le champs Ligne en E4:F4 (cellule fusionnée).

Sauf qu'une seule partie la valeur de la cellule sheets("écriture").cells(D5) m'interesse "Line1"

Donc, comment récupérer seulement cette valeur ?

Voici le code :

With Sheets("Écriture")
    P_ligne = .Range("D2").End(xlDown).Row + 1
    D_ligne = .Cells(Rows.Count, "D").End(xlUp).Row
    For i = P_ligne To D_ligne
        If .Cells(i, "D") = "LineName" Then
            valeur = Len((Sheets("Écriture").Cells(i, "D").Value) - 5)
            i = Der_ligne
            Sheets("Mise en forme finale").Range("E4") = valeur
        End If
    Next i
End With

Merci les développeurs

5test.xlsm (49.34 Ko)

Bonjour,

si j'ai bien compris,

With Sheets("Écriture")
    P_ligne = .Range("D2").End(xlDown).Row + 1
    D_ligne = .Cells(Rows.Count, "D").End(xlUp).Row
    For i = P_ligne To D_ligne
    valeur = .Cells(i, "D")
        If Left(valeur, 9) = "Line Name" Then
            valeur = Replace(valeur, "Line Name ", "")
            Sheets("Mise en forme finale").Range("E4") = valeur
            Exit For
        End If
    Next i
End With

Re,

Peut être que je n'ai pas été clair, mais visiblement le code que tu m'a transmis ne fait rien ...

Tu peux le tester si tu veux via le fichier que je t'es mis en pièce jointe dans mon premier message, le module en question est le "module1".

Ce qui m'intéresse c'est de recup "Line1" à l'aide d'un marqueur qui viendrait ce positionner grâce à la chaine de caractère "Line Name ="

... Pour se faire l'idée est d'interroger la colonne "D", dans laquelle se trouve le champ Line Name. Et ensuite de récup sa valeur "Line1".

Bonjour,

le code fourni produit bien un résultat, "= line 1", je l'ai adapté pour qu'il se limite àce qui suit les caractères "= " soit "line 1"

With Sheets("Écriture")
    P_ligne = .Range("D2").End(xlDown).Row + 1
    D_ligne = .Cells(Rows.Count, "D").End(xlUp).Row
    For i = P_ligne To D_ligne
    valeur = .Cells(i, "D")
        If Left(valeur, 9) = "Line Name" Then
            valeur = Mid(valeur, InStr(valeur, "=") + 3)
            Sheets("Mise en forme finale").Range("E4") = valeur
            Exit For
        End If
    Next i
End With

Yes, merci ça de fonctionne mais j'ai modifié quelques truc pour adapter à mon classeur

Je peux te poser une question supplémentaire:

Comment tu ferais pour faire la même chose mais dans un autre fichier excel, comment fais tu appel à ce fichier ?

re-bonjour,

que veux-tu faire à l'identique dans un autre fichier excel ?

je vois trois possibilités de compréhension de ta demande

  • la macro
  • prendre la donnée qui contient line name
  • copier le résultat

Excuse moi, j'ai cru que j'étais en plein Chat.

Je m'exprime mieux :

C'est à dire que je voudrais prendre le contenu de certaines cellules dans un fichier (Adressage 113) et les importer dans un autre fichier excel (test).

Mais avec certaines conditions...

Dans le fichier excel (test) (feuille: écriture) j'aimerais comparer ma référence de composant avec celles contenu dans l'autre fichier (adressage113), [tu trouveras forcément la référence recherché dans le fichier Adressage113]

et si il y a égalité (forcément) alors récupérer la valeur de la colonne "adressage" correspondante à la ref recherchée (dans le fichier adressage113) et de la copier dans mon fichier "test" feuille "mise en forme finale" colone "113".

Dis moi si tu n'as pas compris, je te détaillerais un peu plus mais je pense que j'ai tout dis.

Merci d'avance!

4test.xlsm (49.34 Ko)
5adressage-113.zip (60.57 Ko)

re-bonjour,

voici

    Set tws = ThisWorkbook.Sheets("mise en forme finale")
    dlt = tws.Cells(Rows.Count, 2).End(xlUp).Row 'dernière ligne de tws
    Set wbs = Workbooks.Open("Adressage 113.xls")
    Set ws = wbs.Sheets(1) 'ws =feuil1 de adressage 113
    dls = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' dernière ligne de ws
    Set ref = ws.Range(ws.Cells(2, 1), ws.Cells(dls, 1)) 'plage de recherche de la reference
    For i = 6 To dlt 'pour chaque ligne de tws
    Set re = ref.Find(tws.Cells(i, 2), lookat:=xlWhole) 'recherche de la référence
    If Not re Is Nothing Then tws.Cells(i, 3) = re.Offset(0, 1) 'si reference trouvée  copie de l'adressage 113
    Next i
    wbs.Close

Je t'aime !!

Merci beaucoup h2so4 !!

Juste besoin de définir le chemin d'accès du fichier en question :

'récupération adressage 113
Set tws = ThisWorkbook.Sheets("mise en forme finale")
    dlt = tws.Cells(Rows.Count, 2).End(xlUp).Row 'dernière ligne de tws
    PathName = "T:\ISh\liste pour récup\"
    Filename = "Adressage 113.xls"
    Set wbs = Workbooks.Open(Filename:=PathName & Filename)
    Set ws = wbs.Sheets(1) 'ws =feuil1 de adressage 113
    dls = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' dernière ligne de ws
    Set ref = ws.Range(ws.Cells(2, 1), ws.Cells(dls, 1)) 'plage de recherche de la reference
    For i = 6 To dlt 'pour chaque ligne de tws
    Set re = ref.Find(tws.Cells(i, 2), lookat:=xlWhole) 'recherche de la référence
    If Not re Is Nothing Then tws.Cells(i, 3) = re.Offset(0, 1) 'si reference trouvée  copie de l'adressage 113
    Next i
    wbs.Close
Application.ScreenUpdating = False

Désactiver le rafraichissement pour gagner du temps

Rechercher des sujets similaires à "lecture ecriture chaine caractere"