Lecture de fichier fermé

3idm

XLDnaute Nouveau
Bonsoir à tous,

Je relance le débat et les recherches sur la lecture en automatique de fichier .CSV, Je sais qu'il y a déjà des sujets la dessus, mais les codes sont souvent trés lourds.
Mon probléme :
J'ai un fichier temp.csv (joint en .xls qu'il faut renommer en .CSV)
et ma macro dans le fichier "essais-lecture.xls"
Elle fonctionne pour récupérer la valeure "108782" présente dans le .CSV. Mais je voudrais récupérer la valeure "CE_QUE_JE_SOUHAITE-RECUPERER" à la place.

Si c'est pa claire, ne pas hésiter ....

Je séche !:eek:

Merci de votre aide
 

Pièces jointes

  • essais_lecture.xls
    24 KB · Affichages: 58
  • TEMP.XLS
    491 bytes · Affichages: 72
  • TEMP.XLS
    491 bytes · Affichages: 76
  • TEMP.XLS
    491 bytes · Affichages: 75
G

Guest

Guest
Re : Lecture de fichier fermé

Bonsoir 3idm,

Une fonction qui permet de récupérer une chaine de caractère passée en paramètres:

Attention j'ai changé le chemin vers le fichier pour les tests.

Code:
Function RecupeCequeJeVeux(Cequejeveux As String)
    Dim pos As Integer
    Open [SIZE=3][COLOR=red]ThisWorkbook.Path[/COLOR][/SIZE] & "\TEMP.csv" For Input As #1
    Do While Not EOF(1)
        Line Input #1, ligne
        pos = InStr(1, ligne, Cequejeveux, vbTextCompare)
        If pos > 0 Then
            RecupeCequeJeVeux = Mid(ligne, pos, Len(Cequejeveux))
            Exit Do
        End If
    Loop
    Close #1
End Function

A Bientôt
 

3idm

XLDnaute Nouveau
Re : Lecture de fichier fermé

Merci de vos réponses
JB : Le fichier où il faut récupérer une valeure est un fichier .CSW, ta fonction ne marche pas
HASCO : Je ne comprend pas tout. Il faud que je colle cela dans une macro classic ?
De plus, la valeure "Ce qui faut que je récupére" va changer tout le temps, alors je ne sais pas si ce code fonctionnera ?
Merci de m'expliquer un peu, je ne connais pas trop ! !
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Lecture de fichier fermé

Récupèrer le dernier item de chaque ligne???

Code:
Sub Recup()

'======== Récupération dans le fichier TEMP.CSV ==============================
Dim CheminFiche As String
 
Open "TEMP.csv" For Input As #1
lig = 2
Do While Not EOF(1)
    Line Input #1, ligne
    tableau = Split(ligne, ";")
    
    Sheets("feuil1").Cells(lig, 3) = tableau(UBound(tableau))
    lig = lig + 1
Loop
Close #1

End Sub

JB
 
G

Guest

Guest
Re : Lecture de fichier fermé

Re,

La fonction que je j'ai donnée doit être coller dans un module de code (un module où il y a des macros)

Exemple de macro contenant l'appel à la fonction:
Code:
Sub MaMacro()
 
    Sheets("feuil1").Range("A1")=RecupeCequeJeVeux("LaChainedeCaractèreAchercher")
 
End Sub

Il faut remplacer 'LaChainedeCaractèreAchercher' par la chaine de caractères que tu cherches à extraire de ton fichier.

A+
 

3idm

XLDnaute Nouveau
Re : Lecture de fichier fermé

Bonjou,

J'ai travaillé sur ton code, mais je galére.
Je récupére en effet le dernier Item de chaque ligne de mon CSW. OK, mais ce que je voudrais, c'est récupérer le dernier ltem de la seconde ligne uniquement.
Dans un second temps, même pouvoir choisir quel Item récupérer.
En tenant compte que tous les Items peuvent varier. Pour moi, il faut faire un test ou un autre truc sur les ";" qui séparent chaque
Item.

Dur! Dur !
 

3idm

XLDnaute Nouveau
Re : Lecture de fichier fermé

Bonjour,

Ta solution marche, mais cela implique qu'il faut que je sache qu"elle sera la valeure recherchée. Dans mon cas je ne sais pas, celle-ci varie tout le temps.On ne peu donc pas la noter en dur dans le code
 
G

Guest

Guest
Re : Lecture de fichier fermé

bonjour 3idm,

dis nous plus précisément comment tu veux récupérer tes Items. Avec des chiffres par exemple:

Recupérer Ligne 2, item 2 ?

En fonction de quoi sont choisis ces itmes?

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Lecture de fichier fermé

Bonjour,

>mais ce que je voudrais, c'est récupérer le dernier ltem de la seconde ligne uniquement.


Dernier item de la 2e ligne:

Code:
Sub Recup()
'======== Récupération dans le fichier TEMP.CSV ==============================
Dim CheminFiche As String
Open "TEMP.csv" For Input As #1
LigRecup = 2
clig = 0

Do While Not EOF(1)
    Line Input #1, ligne
    tableau = Split(ligne, ";")
    clig = clig + 1
    If clig = LigRecup Then Sheets("feuil1").[C2] = tableau(UBound(tableau))
Loop
Close #1
End Sub

JB
 
G

Guest

Guest
Re : Lecture de fichier fermé

Re tous,

Toujours dans ma lancée,
Une fonction qui renvoie L'item de la ligne numLigne et de la colonne numColonne.

Exemples:

RecupererItem(2,3) retournera: 'CE_QUE_JE_SOUHAITE_RECUPERER'
RecupererItem(3,2) retournera: T
RecupererItem(5,2) retournera: ALUMINUM mm - 2024

si le numéro de colonne n'existe pas pour la ligne, un message d'avertissement est affiché.

Code:
Function RecupererItem(numLigne As Integer, numcolonne As Integer)
    Dim iLigne As Integer                             'Compteur de ligne du fichier
    Dim sLigne As String                              'Texte d'une ligne du fichier
    If numLigne < 1 Then numLigne = 1                 'Valeurs minimales des numéros ligne
    If numcolonne < 1 Then numcolonne = 1             'et colonne
'Ouverture du fichier
    Open ThisWorkbook.Path & "\TEMP.csv" For Input As #1
    Do While Not EOF(1)                               'Boucle la lecture jusqu'à la fin par défaut
        Line Input #1, sLigne                         'Charge la première ligne du fichier dans la variable sLigne
        iLigne = iLigne + 1                           'Incrémente le compteur de ligne
        If iLigne = numLigne Then                     'Si on est arrivé au numéro de ligne voulu
            On Error Resume Next                      'En cas d'erreur on passe
            'Retourner la donnée
            RecupererItem = Split(sLigne, ";")(numcolonne - 1)    '
            If Err.Number = 9 Then                    'Si une erreur sur le numéro de colonne est levée
                'Avertir l'utilisateur
                MsgBox "Numéro de colonne est incorrect!", vbExclamation, "Récupérer item csv"
            End If
            On Error Goto 0                       'Rétablir la gestion normale d'erreur
            Exit Do                                   'Numéro de ligne atteint on sort de la boucle
        End If
    Loop                                              'Continuer la boucle de lectue
    Close #1
End Function


A+
 

Discussions similaires

Statistiques des forums

Discussions
312 785
Messages
2 092 089
Membres
105 194
dernier inscrit
Ateups