Copier une valeur d'un fichier .txt

Bonjour,

Je possède un programme qui copie et colle un fichier .txt dans une feuille excel.

Je change de fichier txt assez souvent, le contenu est toujours le même mais pas toujours à la même colonne. J'aimerai savoir s'il est possible de copier une partie du contenu de la cellule si le texte au dessus possède une certaine valeur :

Lorsque une cellule de la colonne A disons contient le texte :"Verification moyenne", je copie le contenu des cellules 3 lignes en dessous.

Je suis parvenu à sélectionner ma case à partir de laquelle je copie les données, mais pas à copier les données elle-mêmes.

If Not IsEmpty(ActiveCell.Value) Then
    Do While Not (cellule = "** Vérification moyenne")

Auriez-vous une piste ? J'ai cherché avec la fonction Offset, et en incrémentant, mais je n'arrive pas à trouver une solution.

Salut Devery,

Dans le fichier ci-joint, il y a une macro qui recherche l'emplacement du texte ''Vérification moyenne'' et qui reporte le contenu des 3 cellues en dessous dans la colonne E.

Option Explicit
Sub Démo()
Dim Cellule As Range, i As Integer, j As Integer

For Each Cellule In ActiveSheet.UsedRange
    If Cellule = "Vérification moyenne" Then
        i = Cellule.Row
        j = Cellule.Column
        GoTo Etiquette
    End If
Next

Etiquette:
Range(Cells(i + 1, j), Cells(i + 3, j)).Copy Range("E2")

End Sub

Ca t'aide ?

Amicalement.

6devery-v2.xlsm (26.19 Ko)

Bonjour Yvouille,

Merci de ta réponse !

Je ne pensais pas que cela était si simple, est-il possible de relevé uniquement la valeur qui est 3 lignes en dessous (Donnée 110 ici) ?

Aussi, dans mon cas la ligne 110 contient plusieurs valeurs, voici un exemple :

******************************************************************************

Vérification moyenne

Mesure Brut Moyenne

Palier 1

14,985 14,984 14,972 14,983 14,998 14,999 14,996 14,991 14,990 14,990 14,989

Est-il possible de prendre les valeurs d'une range uniquement est pas de la cellule entière ? Ici il y a 10 valeurs puis une valeur moyenne, il faudrait donc ignorer la dernière valeur.

Enfin pourrais-tu m'expliquer un peu le fonctionnement de ton programme ? J'ai cherché sur différents forums et beaucoup utilisent des formules en ajoutant des sommes à x,y,i ou j comme ici. Je ne comprends pas très bien le fonctionnement .

Un grand merci pour ton aide en tout cas !

Re,

Déjà ta première demande n'était pas très claire, mais là ça se complique de plus en plus.

Tu devrais déjà me fournir un fichier exemple. Par exemple lorsque tu me dis que ta ligne 110 contient plusieurs valeurs, je ne visualise pas du tout pourquoi tu parles de cette ligne 110 alors qu'un moment avant tu disais vouloir chercher la valeur d'une seule cellule !

Je ne pensais pas que cela était si simple

En fait, ce n'est pas si facile que ça !

…. est-il possible de relevé uniquement la valeur qui est 3 lignes en dessous (Donnée 110 ici) ?

Oui, il suffit de remplacer la première ligne ci-dessous par la seconde, comme dans le fichier ci-joint.

Range(Cells(i + 1, j), Cells(i + 3, j)).Copy Range("E2")
Cells(i + 3, j).Copy Range("E2")

Enfin pourrais-tu m'expliquer un peu le fonctionnement de ton programme ? J'ai cherché sur différents forums et beaucoup utilisent des formules en ajoutant des sommes à x,y,i ou j comme ici. Je ne comprends pas très bien le fonctionnement

Tu me demandes presque un cours complet de VBA. Regarde dans le ruban au-dessus de nos message, il y a un ''Cours VBA''. Celui-ci est vraiment bien foutu. Si tu t'intéresses aux macros, commence par là.

Cordialement.

6devery-v3.xlsm (26.12 Ko)

Bonjour Yvouille !

Désolé de répondre si tardivement, j'ai cogité la nuit dernière est je suis parvenu à une solution avec de l'aide supplémentaire d'autres personnes :

Sub status_sondes()

    Dim x As Integer, lines As String, i As Long: x = FreeFile
    fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt", 1, "OUVRIR LE FICHIER TEXT", , False)
    If fichier <> False Then   
        Open fichier For Input As #x: lines = Split(Input$(LOF(x), #x), "Numéros de série sonde / Status sonde")(1): Close #x
        lines = Split(lines, " Trame de calibrage")(0)
        tbl = Split(lines, "Sonde n°")
        With Sheets(1)
            .Cells(1, 1) = "Numéros de série sonde / Status sonde"
            For i = 1 To UBound(tbl)
                Cells(Rows.Count, 1).End(xlUp).Offset(1) = "Sonde n°" & Split(Replace(Application.Trim(tbl(i)), vbCrLf, ""), "*")(0)

          Next
        End With
    End If
End Sub

Je suis parvenu au résultat souhaité, désolé de ne pas t'avoir informé plus tôt. (J'aurais du faire plus de recherche au préalable...)

Je te remercie cependant pour tout le temps que tu m'as accordé !

Bonne fêtes de fin d'années et joyeux noël !

Salut,

je suis parvenu à une solution avec de l'aide supplémentaire d'autres personnes

Tu leur avais probablement donné plus d'informations qu'à moi

La personne qui t'a aidé t'a proposé une solution par ''tableau'', mais dans ce cas-ci ça ne change pas énormément, puisqu'il n'y a pas vraiment de temps à gagner. Comme à chaque fois, plusieurs solutions sont possibles.

Très bonnes salutations.

Rechercher des sujets similaires à "copier valeur fichier txt"