Lecture et écriture d'une sous chaine de caractère Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
i
iliasse
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 2 avril 2015, 11:58

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 :)
test.xlsm
(49.34 Kio) Téléchargé 5 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'453
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 2 avril 2015, 12:22

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
i
iliasse
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 2 avril 2015, 12:40

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".
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'453
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 2 avril 2015, 13:00

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
i
iliasse
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 2 avril 2015, 13:32

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 ?
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'453
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 2 avril 2015, 14:53

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
i
iliasse
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 2 avril 2015, 15:25

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!
Adressage 113.xls
(229 Kio) Téléchargé 3 fois
test.xlsm
(49.34 Kio) Téléchargé 2 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'453
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 2 avril 2015, 16:03

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
i
iliasse
Membre habitué
Membre habitué
Messages : 98
Inscrit le : 27 mars 2015
Version d'Excel : 2010

Message par iliasse » 2 avril 2015, 16:28

Je t'aime !! :D

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
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message