Récup de valeur dans un .CSV

  • Initiateur de la discussion Initiateur de la discussion GENTILE
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GENTILE

XLDnaute Nouveau
Bonjour,

Je voudrais récupérer des valeurs dans un fichier CSV via des boutons avec une macro. Mais le fichiers CSV peux varier d'un échantillon à un autre.

Cette macro devra identifier le numéro d'échantillon depuis le fichier de base dans le CSV et copier la valeur du/des composés présents dans le SCV dans les cases correspondantes dans le fichier de base.

J'espère m'être bien exprimé car se n'est pas forcement évident.

Je joint deux fichiers l'un de base et l'autre dans lequel il faut aller chercher les valeurs à copier dans les cases correspondantes.

Merci par avance pour votre aide.
 

Pièces jointes

Dernière édition:
Bonjour,

Je voudrais récupérer des valeur dans un fichier excel via des boutons avec macro.

Le premier bouton récupérerait les valeurs correspondant à l'échantillon 1, le bouton 2 à l'échantillon 2, ... et le tout en utilisant les cases des chemins et nom du fichier.

Je joint deux fichiers l'un de base et l'autre dans lequel il faut aller chercher les valeurs à copier dans les cases correspondantes.

Merci par avance pour votre aide.
😱 il n'y a pas de C16 dans Export1.xls !!!

établir une liaison avec le fichier export, les 2 fichiers étant ouvert dans Excel
en C13 :
=Export1.xls!$C1
en F13 :
=Export1.xls!$C17
en I13 :
=Export1.xls!$C33
étendre vers le bas jusque la ligne 28
upload_2018-10-24_15-38-37.png
 
Normal, j'ai glissé une ligne de trop désolé, il n'y en a effectivement que 15 composés

Les liaisons j'y avait pensé, mais comme les fichiers n'auront pas le même racine, je dois inclure un chemin d'accé qui lui aussi diffère d'un dossier à un autre, mais aussi pour ne pas modifier involontairement ce fichier d'export. c'est pour sa qu'une macro m'est utile.

J'ai d'ailleur modifié les fichiers à la demande de job75

Merci GEEDEE
 
Oui je m'étais mis aussi dans le cas le plus simple posible, tout les composés présent, mais parfois 1 échantillon comportera 12 composés, des fois 5 composés, ... cet à la base j'ai un CSV et non un XLS et se CSV je dois impérativement ne jamais y toucher, le modifier ... donc ils seront enrigistrés à un endroit précis d'ou l'idée du chemin d'accé.
 
Re, salut Modeste geedee et MJ13,

Voyez le fichier joint et cette macro :
Code:
Sub Récupération()
Dim numech As Range, dest As Range, fichier$, d1 As Object, d2 As Object, t, i&, cles, n, a(), num
Set numech = [B3:D3] 'liste à adapter
Set dest = [B8] 'à adapter
fichier = ThisWorkbook.Path & "\" & [B6] 'à adapter éventuellement
Application.ScreenUpdating = False
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Workbooks.OpenText fichier, Local:=True
t = ActiveWorkbook.Sheets(1).UsedRange.Resize(, 3)
ActiveWorkbook.Close
'---clés et items---
For i = 1 To UBound(t)
    If t(i, 2) <> "" Then
        d1(UCase(t(i, 2))) = ""
        d2(t(i, 1) & UCase(t(i, 2))) = t(i, 3) 'mémorise la valeur en 3ème colonne
    End If
Next
If d1.Count = 0 Then Exit Sub 'sécurité
cles = d1.keys
'---tableaux des résultats---
Rows(dest.Row & ":" & Rows.Count).Clear
For n = 1 To numech.Count
    '---titre---
    If n > 1 Then Set dest = dest(1, 4)
    dest.Resize(, 2).Merge
    dest = "Echantillon " & n
    With dest.MergeArea
        .Interior.ColorIndex = 16
        .Font.Size = 16
        .Font.ColorIndex = 2 'police blanche
        .Font.Bold = True 'gras
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Borders.Weight = xlThin
    End With
    '---1ère colonne (clés)---
    With dest(2).Resize(d1.Count)
        .Value = Application.Transpose(cles) 'Transpose est limitée à 65536 lignes
        .Interior.ColorIndex = 16
        .Font.Size = 16
        .Font.ColorIndex = 2 'police blanche
        .Font.Bold = True 'gras
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Borders.Weight = xlThin
    End With
    '---2ème colonne(items)---
    With dest(2, 2).Resize(d1.Count)
        ReDim a(1 To d1.Count, 1 To 1)
        num = numech(n)
        For i = 1 To UBound(a)
            a(i, 1) = d2(num & cles(i - 1))
        Next
        .Value = a
        .Interior.ColorIndex = 19
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Borders.Weight = xlThin
    End With
Next
End Sub
Les 2 fichiers doivent être placés dans le même répertoire (le bureau).

A+
 

Pièces jointes

Merci Job75, super boulot je vois que tu touches bien.

Par contre je souhaitais simplement copier les valeurs dans les cases des composés, je pense que la macro sera beaucoup moins compliquée, les colonnes étant déjà existantes. C'est une simple recopie de valeur pure et dure.

Encore merci pour ton aide en attendant de te relire.

Gulliver
 
Bonjour Job merci pour ta réponse elle est géniale mais étant nul pour ainsi dire en codage de macro.

Mais je dois avouer qu'elle est beaucoup trop complexe, à la base je souhaitais une simple recopie de valeurs dans des cases dédiées, avec des colonnes pré-remplie il m'anquait que la façon d'amener la dite valeur en fonction de l'échantillon et du composé.

Je vois que tu maîtrises à perfection cette outils du VB, mais ne serait-il pas plus simple de "simplement" copier la valeur dans les cases appropriées?

J'aimerais comprendre, en plus je suis de nature curieuse. En plus du dis que la taille du CSV peu changer, certe mais en quoi cela joue sur le codage?

J'espère ne pas t'avoir froissé ou vexé comme MJ13 le dit si bien.

Cordialement.
 
J'ai oublié aussi de préciser que le fichier de base que j'ai fourni est "fictif car pas du tout ressemblant au fichier initiale, car je ne peux pas le diffuser pour des raisons de qualité, ... donc les numéros d'échantillon ne sont plus à leur place respective, ... c'est pour sa que je m'attendais à une solution plus simple avec des positions des cellules de recopie, ... que j'aurais adapté à mon document, et mon fichier d'export son format n'est pas encore réellement définie, forme, extension, ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
  • Question Question
2
Réponses
28
Affichages
2 K
Deleted member 441486
D
Retour