Extraire d'un fichier Excel les données à J-1, J-2, J-3...

rx.stephane

XLDnaute Nouveau
Bonjour,

Dans le fichier joint, qui est déjà une mise en forme par macro automatique, je voudrais à l'aide d'un complément de code VBA pouvoir sélectionner les lignes de données à J-1 (je m'appuie sur la colonne A), pour les exporter vers un autre fichier, sachant que chaque jour ce fichier s'enrichie avec les données de la veille.
Je voudrais pouvoir le faire également pour les données à J-2 (indépendamment de J-1)
Je voudrais pouvoir le faire également pour les données à J-3 (indépendamment de J-1 & J-2)
Je voudrais pouvoir le faire également pour les données à J-4 (indépendamment de J-1, J-2 & J-3)
Je compte donc faire un fichier XLSM dans lequel il y aura 4 boutons pour exporter les données de la veille, avant-veille…
Je pensais adapter la fonction "AUJOURDHUI()" mais je ne sais pas écrire de code avec.
Si vous pouvez m'aider, merci par avance.
 

Pièces jointes

  • Classeur.xlsx
    11.2 KB · Affichages: 54
  • Classeur.xlsx
    11.2 KB · Affichages: 54
  • Classeur.xlsx
    11.2 KB · Affichages: 53

Jack2

XLDnaute Occasionnel
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour rx.stephane,

Comme je ne suis pas sûr d'avoir tout compris, essaie ce bout de code après avoir créé une feuille nommée Feuil2
Code:
Sub Test()
Today = Int(Now)
'j - 1
J_1 = Today - 1
'j - 2 - J_2 = Today - 1

DerLig = Range("A1:A" & Range("A65536").End(xlUp).Row).Count
k = 1
For i = 2 To DerLig
    If CDate(Left(Cells(i, 1), 10)) = J_1 Then
        Ligne = Range("A" & i & ":J" & i)
        For j = 1 To 9
            Sheets("Feuil2").Cells(k, j) = Ligne(1, j)
        Next j
        k = k + 1
    End If
Next i
End Sub
Les lignes correspondant à hier (j-1) sont copiées sur la feuille Feuil2. Vois si c'est ce type de copie que tu veux faire vers un autre fichier.

A+ Jack2
 

rx.stephane

XLDnaute Nouveau
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour Jack2,

Super, le code répond complètement à ma demande.
J'ai pu l'adapter pour J-2, -3 & -4.

2 questions supplémentaires :
- Lorsque j'exporte J-3 à la suite de J-4, les lignes de J-3 vienne écraser celles de J-4 au lieu de s'ajouter à la suite.
Peux-tu palier ce souci ?
- Je veux que ces lignes soient importées depuis la "Feuil2" du classeur "toto.xlsm" qui se trouve sur D:\Répertoire\Dossier\
Peux-tu inclure ce chemin dans ton code?

Si tu peux m'aider de nouveau,

Merci par avance.
 

Jack2

XLDnaute Occasionnel
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour rx.stephane,

Code pour la première question :
Code:
Sub Test()
Today = Int(Now)
'j - 1
J_1 = Today - 1
'j - 2 - J_2 = Today - 1
DerLig = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
If CDate(Left(Cells(i, 1), 10)) = J_1 Then
    Ligne = Range("A" & i & ":J" & i)
    With Sheets("Feuil2")
        If .Range("A1") = "" Then
            k = 1
        Else
            k = .Range("A" & Rows.Count).End(xlUp).Row + 1
        End If
        For j = 1 To 9
            .Cells(k, j) = Ligne(1, j)
        Next j
    End With
End If
Next i
End Sub

Pour la deuxième question :
- les données de la Feuil1 du classeur "Classeur.xlsx‎" du post n°1 se trouvent dans la Feuil2 (classeur "toto.xlsm")
- dans quel classeur et depuis quel répertoire faut-il copier ces données
(si ma demande n'est pas claire, joints les deux fichiers avec des données anonymes).

A+ Jack2
 

rx.stephane

XLDnaute Nouveau
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Jack2,

Merci encore, ça répond de nouveau complètement à ma demande.

Concernant ma 2ème question :
Le but est de faire un appel des données du fichier "Classeur.xlsx" à partir de la Feuil2 du fichier "toto.xlsm" dans laquelle j'ai créé 4 boutons auxquels sont rattachés les macros que tu as créés, sachant que le fichier "toto.xlsm" sera toujours situé au même emplacement du type D:\Répertoire\Dossier\.

Je te joins les 2 fichiers, si tu peux faire quelque chose…

@+
 

Pièces jointes

  • toto.xlsm
    17 KB · Affichages: 27
  • Classeur.xlsx
    12.4 KB · Affichages: 27
  • toto.xlsm
    17 KB · Affichages: 28
  • Classeur.xlsx
    12.4 KB · Affichages: 30
  • toto.xlsm
    17 KB · Affichages: 26
  • Classeur.xlsx
    12.4 KB · Affichages: 30

Jack2

XLDnaute Occasionnel
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonsoir rx.stephane,

Ci-joint le fichier avec quelques lignes de code en plus pour la question n°2 (Alt + F11, dans Module1).

A+ Jack2
 

Pièces jointes

  • toto.xlsm
    19.1 KB · Affichages: 31
  • toto.xlsm
    19.1 KB · Affichages: 32
  • toto.xlsm
    19.1 KB · Affichages: 30

rx.stephane

XLDnaute Nouveau
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour Jack2,

UN GRAND MERCI,

J'ai configuré en fonction du chemin de mes fichiers et j'ai adapté de J-4 à J-1, ça fonctionne PARFAITEMENT.
2 questions :
1) A quoi sert de faire ALT+F11 dans Module1 ?
2) En dessous du code, tu m'as mis des lignes, exemple :
Sub J_1()
Copie_Lignes (1)
End Sub
Certainement pour m'indiquer qu'il fallait que je recopie le code initial et que je le personnalise en fonction du jour voulu.
Mais comme le code commence également par un Sub :
Sub Copie_Lignes(Nbre As Byte)
Je n'ai pas su conjuguer par exemple Sub J_1() & Sub Copie_Lignes(Nbre As Byte) donc j'ai supprimé cette ligne et je commence par :
Sub J_1()
Dim J_N As Date, Today As Date
Ca n'empêche pas le bon fonctionnement mais je me dis que si tu as écris cette ligne de code c'est qu'elle doit avoir une utilité (qui m'échappe)
Peux-tu me dire comment assembler les 2.

Une très bonne journée.
 

Jack2

XLDnaute Occasionnel
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour rx.stephane,

Alt F11, c'est juste pour passer d'Excel à Visual Basic (j'avais oublié que tu le savais).

Les J_1() correspondent aux macros affectées aux boutons J - 1, J - 2...et le petit bout de code Copie_Lignes (1) appelle la macro principale Copie_Lignes(Nbre As Byte). Le copie_Ligne(1) correspond à Nbre = 1. Dans J_N = Today - Nbre, donne J_N = Today -1 (hier). Pour le reste :
Code:
Dim J_N As Date, Today As Date
Dim DerLig As Long
Dim k As Integer, i As Integer
Dim Ligne As Variant
Dim FToto As String, FClass As String
Const RepToto = "D:\Répertoire\Dossier\"
Const RepClass = "D:\Excel2\"
c'est la déclaration des variables et constantes selon leur type, cela m'évite des erreurs et permet de mieux comprendre ce que je fais (cf. Option Explicit).

A+ Jack2
 

rx.stephane

XLDnaute Nouveau
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour Jack2,

Encore une fois merci pour ce complément d'info.
Concernant ALT+F11, je te confirme que je ne connaissais pas ce raccourci, ce n'étais pas une question piège ;)

Merci à toi pour ta disponibilité et ton aide précieuse.

Bonne continuation.

@+
 

rx.stephane

XLDnaute Nouveau
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour,

Jack2 m'a solutionné mon souci par ce code qui fonctionne nickel :

Code:
Sub Test()
Today = Int(Now)
'j - 1
J_1 = Today - 1
'j - 2 - J_2 = Today - 1
DerLig = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
If CDate(Left(Cells(i, 1), 10)) = J_1 Then
Ligne = Range("A" & i & ":J" & i)
With Sheets("Suivi_des_fiches")
If .Range("A1") = "" Then
k = 1
Else
k = .Range("A" & Rows.Count).End(xlUp).Row + 1
End If
For j = 1 To 9
.Cells(k, j) = Ligne(1, j)
Next j
End With
End If
Next i
End Sub
Code:

J'ai simplifié mon idée de départ et je l'utilise maintenant dans un seul et même fichier entre 2 feuilles.

Je voudrais pouvoir coller cet export sur la 1ère cellule vide de la colonne B de ma feuille "Suivi_des_fiches".
Si vous avez une solution,

Merci par avance
 

Jack2

XLDnaute Occasionnel
Re : Extraire d'un fichier Excel les données à J-1, J-2, J-3...

Bonjour rx.stephane,

Faut pas s'affoler, j'ai juste fais un grand pont (évites les MP SVP).
Ci-joint un fichier qui prend les données dans la première feuille et recopie celles qui sont sélectionnées dans une deuxième feuille en partant de la 1ère cellule non vide, colonne B? J'espère que cela correspond à ta demande.

A+ Jack2
 

Pièces jointes

  • toto_2.xlsm
    22.3 KB · Affichages: 26

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 327
Membres
102 862
dernier inscrit
Emma35400