Récupération de données

kheldar

XLDnaute Nouveau
Bonjour au forum,

Je me permets de vous exposer mon problème :
Je souhaite récupérer grâce à la recherche verticale des données d'un classeur excel en fonction d'une valeur commune et ceci par l'activation d'une macro.
La macro doit être lancé chaque jour de la semaine (récupération quotidiennes de ces données car générées quotidiennement)

Voici le code :

Range("H15").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(C[-7],'ventes flegs journaliere.csv'!R1C1:R50000C5,4,FALSE)"

Dans l'exemple ci-dessus, vous pouvez constaté que c'est une cellule de la colonne H qui est considérée (journée du Lundi)
Seulement chaque jour de la semaine cette colonne ( H pour Lundi ; R pour le Mardi; AB pour le Mercredi..... jusqu'au Samedi).

Je n'ai évidemment pas envie de créer une macro pour chaque jour de la semaine.

Je souhaiterai faire bouger le -7 dans la formule de recherche verticale
-7 pour le Lundi
-17 pour le Mardi
-27 pour le Mercredi

.....


J'espère avoir été clair et précis.

Merci d'avance pour toutes vos réponses.
Cordialement.
 

Paritec

XLDnaute Barbatruc
Re : Récupération de données

Bonjour Kheldar, le forum,
tu as fait une demande qui n'est pas franchement claire et de plus, tu n'as pas joint un petit fichier avec des explications de ce que tu as, et de ce que tu veux arriver à faire?
alors quand c'est comme ça on lit, on comprend pas, et on passe à autre chose.
bon dimanche
a+
Papou
 

ROGER2327

XLDnaute Barbatruc
Re : Récupération de données

Bonjour à tous
Je suis d'accord avec vous, Paritec : un fichier montrant ce qu'on a et ce qu'on veut obtenir est le meilleur moyen d'obtenir une réponse pertinente.​
Par conséquent, message pour kheldar : donnez-nous un fichier avec quelques explications. À bientôt, j'espère...​
Cordialement,
ROGER2327
 

kheldar

XLDnaute Nouveau
Re : Récupération de données

Bonjour,

suite aux messages précédents, je vais essayer d'être plus précis en vous fournissant les fichiers nécessaires à ma demande

Le premier fichier (ventes flegs) correspond au fichier extrait du système de gestion.

Le second fichier (Récap Ventes) me permet de récupérer pour chaque d'ouverture les ventes extraites du premier fichier.

Ces ventes doivent être placées dans la colonne H pour Lundi, S pour le Mardi.

Seulement je ne récupère chaque jour que les ventes de la veille et non la totalité de la semaine et je n'ai pas envie envie de créer une macro pour chaque jour de la semaine.

Je souhaiterai qu'en cliquant sur le bouton de commande, à l'aide d'une macro se remplisse la colonne ventes mais en ayant vérifier avant si il existe déjà des données sur les jours précédents et ainsi décaler la colonne dans laquelle les ventes doivent être importé du ficher initial.

J'espère avoir été plus clair et pus précis.

J'attends vraiment de l''aide.
Merci d'avance.
Cordialement.
 

Pièces jointes

  • ventes flegs journaliere.xls
    27.5 KB · Affichages: 182
  • Récap Ventes flegs.xls
    32.5 KB · Affichages: 107

JCGL

XLDnaute Barbatruc
Re : Récupération de données

Bonjour à tous,

Un essai avec SOMMEPROD() pour s'affranchir du RECHERCHEV() et du +10
Code:
Option Explicit

Sub Test()
Range("H15:H54,R15:R54,AB15:AB54,AL15:AL54,AW15:AW54,BG15:BG54,BQ15:BQ54").ClearContents
Range("H15:H54,R15:R54,AB15:AB54,AL15:AL54,AW15:AW54,BG15:BG54,BQ15:BQ54").Formula = _
"=SUMPRODUCT(('Feuille Excel.csv'!R2C1:R41C1=RC1)*('Feuille Excel.csv'!R1C2:R1C8=R14C)*'Feuille Excel.csv'!R2C2:R41C8)"
Range("A1").Select
End Sub
Les deux fichiers à extraire dans le même répertoire et à ouvrir
Un clique sur le Go du fichier XLS

A+ à tous
 

Pièces jointes

  • Feuille Excel.zip
    10.9 KB · Affichages: 45
  • Feuille Excel.zip
    10.9 KB · Affichages: 51
  • Feuille Excel.zip
    10.9 KB · Affichages: 41

kheldar

XLDnaute Nouveau
Re : Récupération de données

Voici le texte de ma macro actuelle

Range("H15").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(C[-7],'ventes flegs journaliere.xls'!R1C1:R50000C5,3,FALSE)"
Selection.AutoFill Destination:=Range("H15:H165")
'Copier Coller valeurs des ventes
Range("H15:H35").Select
ActiveWindow.SmallScroll Down:=-6
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H15").Select
Application.CutCopyMode = False
'Remplacement des valeurs eronnées par des 0
Selection.Copy
Cells.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


Merci d'avance pour tous vos conseils.
 

bqtr

XLDnaute Accro
Re : Récupération de données

Bonjour à tous et Re à certains :)

Un exemple par macro :

Code:
Sub Exteact()
Dim JourJ As Byte, Decal As Byte, k As Long

JourJ = Weekday(Date, vbMonday)
Decal = Application.WorksheetFunction.Choose(JourJ, 7, 18, 28, 38, 48, 58)
With Sheets("Feuil1")
 .Cells(14, Decal + 1).FormulaR1C1 = "=VLOOKUP(C[-" & Decal & "],'ventes flegs journaliere.csv'!R1C1:R50000C5,3,FALSE)"
 .Cells(14, Decal + 1).AutoFill Destination:=.Range(.Cells(14, Decal + 1), .Cells(.Cells(65536, 1).End(xlUp).Row, Decal + 1))
   For k = 14 To .Cells(65536, 1).End(xlUp).Row
     If IsError(.Cells(k, Decal + 1)) Then .Cells(k, Decal + 1) = 0
   Next
End With
   
End Sub
La variable JourJ te donne le n° du jour de la semaine (Lundi = 1, Mardi = 2..., Samedi = 6)
La variable Decal te donne en fonction de JourJ le décalage souhaité.
Ex si JourJ = 3 (Mercredi), Decal = 28

Il faut que tu adaptes les 6 choix en fonction des décalages souhaités.
Tu écrivais tout à l'heure -7,-17,-27 maintenant c'est -7,-18 avec ton exemple.

Ensuite on se sert de la variable Decal pour remplir la colonne.

Attention dans ton fichier csv mis en PJ tu n'as que 3 colonnes donc la formule de recherche a été modifiée en conséquence.

A+
 

chris

XLDnaute Barbatruc
Re : Récupération de données

Bonjour

Pierre olivier je ne comprends pas l'utilité de decal à l'intérieur du vlookup : en fait il faut juste chercher la valeur située en colonne A comme si on avait
$a5 dans un recherchev.
Donc RC1 est équivalent à cela : colonne 1 en fixe, ligne variable selon la position de la formule.

Sinon je suis d'accord sur son utilisation pour ventiler dans les colonnes mais il faudrait se baser sur le jour indiqué dans le csv je pense.

Bon dimanche (ce qu'il en reste !) à toi et à tous
 

kjin

XLDnaute Barbatruc
Re : Récupération de données

Bonsoir,
C'est pas la ligne 15 mais 14, c'est pas colonne + 10 mais 11
Bon je ne sais pas s'il faut au préalable traiter le CSV, puisque c'est un xls qui est fourni, dont le résultat est en colonne 3, et non 4 d'ailleurs.
On suppose que les 2 fichiers sont ouverts
On ne sais pas si le dimanche..., donc j'ai pas retenu l'hypothèse
Bref qq précisions s'imposent, me semble t-il
Code:
Sub macro1()
Jour = Weekday(Date)
If Jour = 1 Then Exit Sub
With Sheets("Feuil1")
    Select Case Jour
        Case 2
        Col = 8
        Case Else
        Col = 19 + (11 * (Jour - 3))
    End Select
    For i = 14 To .Range("A65000").End(xlUp).Row
        .Cells(i, Col).Formula = "=VLOOKUP(" & .Cells(i, 1).Address & ",'ventes flegs journaliere.xls'!A1:D50000,3,0)"
            If IsError(.Cells(i, Col)) Then .Cells(i, Col) = ""
    Next
'    Sans renvoyer la formule
'    Set Wkr = Workbooks("ventes flegs journaliere.xls").Sheets("ventes flegs journaliere")
'    For i = 14 To .Range("A65000").End(xlUp).Row
'        .Cells(i, Col) = Application.VLookup(.Cells(i, 1), Wkr.Range("A1:D50000"), 3, 0)
            'If IsError(.Cells(i, Col)) Then .Cells(i, Col) = ""
'    Next
    End With
End Sub
A+
kjin
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Récupération de données

Bonsoir Chris,

Tu as tout à fait raison, on peut mettre aussi comme ceci :
Code:
.Cells(14, Decal + 1).FormulaR1C1 = "=VLOOKUP(RC1,'ventes flegs journaliere.csv'!R1C1:R50000C5,3,FALSE)"

Mais comme je maîtrise mal ce type de notation j'ai été au plus simple pour moi.:)

Pour le fichier csv, on ne sait pas comment kheldar l'utilise (détruit après utilisation, archivé). Y a t'il un risque de se tromper de fichier ? Peut-être sera-t-il nécessaire de tester la date de création.

Bonne fin de journée
 

Discussions similaires

Statistiques des forums

Discussions
312 318
Messages
2 087 209
Membres
103 493
dernier inscrit
Vidal Salvador