IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplir un fichier Excel à partir d'autres


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut Remplir un fichier Excel à partir d'autres
    Bonjour,

    j'ai à remplir un fichier Excel à partir d'autres fichiers Excel en lecture chaque jour de l'année. Je veux automatiser cette tâche et ce remplissage de chaque jour se fait sur une nouvelle colonne.
    voici les questions sur lesquelles j'ai besoin de votre aide
    1. Faut-il le faire avec Macro ou VBA ?
    2. Comment le faire ?
    3. Un exemple en fichier Excel

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu,

    avec Macro ou VBA?
    Franchement, si tu peux expliquer la différence, je suis preneur.

    comment le faire ?
    N'ayant pas d'idée sur l'organisation des données, répondre à cette question me semble difficile.
    Quand bien même, aurais-tu le commencement d'un code à soumettre?

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    La manière de réaliser une macro n'est pas la même en VBAn c'est ce que je pense. Bon je suis débutant.

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    la manière de réaliser un macro n'est pas la même en VBA
    Ah bon!


    Sérieux.
    Je te conseille d'aborder les fondamentaux avant de chercher à développer.
    Pour cela, tu peux consulter les liens indiqués dans cette discussion.

    Bonne continuation.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    C'est le fichier dans lequel je vais ranger les données chaque jours

    pour les fichiers sources on peut les trouvés dans différents chemin par exemple:

    X:/stockage/ Formations/Matériel/zen/use/classeur1.xlsx

    C:/Amelioration/ Formations/Matériel/classeur2.xlsx

    D:/doc/classeur3.xlsx

    D:/archive/Document/Formations/classeur4.xlsx
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Donc pour chaque information, insérer une colonne 2 colonnes avant la dernière et recopier les données.

    Pour définir l' "avant avant" dernière colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Public Sub essai_col()
     
    Dim dercol As Integer
     
    With Worksheets("Feuil1")
            dercol = .Cells(1, .Columns.Count).End(xlToLeft).Column - 2
            Debug.Print dercol
    End With
     
    End Sub
    Ce modeste code et les liens que je t'ai indiquées devraient t'être utiles.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut merci et explication
    j'explique le remplissage de Classeur1.xlsx à partir des 5 classeurs

    supposons que nous sommes le 1er décembre

    jour1: je remplis quelques cellules de la colonne du 1er décembre avec les données disponible dans les 5 classeurs

    NB: les données des cellules manquantes du 1er seront disponible au jour suivant c-à-d le 2déc

    jour2: je remplis les cellules du 1er jour pour compléter la colonne du 1er puis je renseigne quelques cellules de la colonne du 2 décembre

    ...

    jour31: cette colonne sera complété avec les données du 1er jan

    autrement dit je boucle le remplissage d'une colonne du jour précédant puis je commence celle du jour

    j'espère que je suis explicite

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui on a tres bien compris
    on a plus qu'a souhaiter que l'organisation de tes donnée dans tes 5 fichiers soit aussi bien organisées sinon ce sera la cata

    tres tres mauvaise idée ce retour en arriere il faudrait que les données soit beton et la date de ces données accessible via vba donc certainement une colonne date dans tes 5 fichiers
    sans ca c'est mort abandonne cette idée
    autant se contenter de faire cette mise a jour en fonction des donnée de la veille 1 er janvier on recupere le 31 decembre et c'est tout
    dans le cas contraire tu a INTERET a betonner les données en amont sur tes 5 fichiers pour que ton principe de retour ou jour actuel fonctionne
    bon courage
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut merci
    se contenter de faire cette mise a jour en fonction des donnée de la veille 1 er janvier on recupere le 31 decembre

    je compte proceder ainsi et je vous reviens

    merci

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut remplissage via une macro
    bonjour

    j'ai réalisé une macro qui me copie des valeurs de cellules de mes différents fichiers sources et les collent dans la colonne du jour-1

    cependant deux de mes fichiers sources sont dynamique (c-à-d que les données que je copies change chaque jour dans le même feuille et même cellule).
    j'ai un autre fichier source qui est renommé du jour au jour (exemple :hier: Mon rapport_27122017; aujourd'hui:Mon rapport_27122018; demain :Mon rapport_27122019).

    1-pouvez vous m'aider à réaliser une macro qui fait un copier coller des valeurs. il va me permet de les garder malgré qu'ils n'existent plus dans le fichier source, si cela est possible bien sûr sinon une alternative.

    2- pouvez vous m'aider à réaliser une macro qui permet de retrouver le fichier source du jour puis copier les valeurs des cellules cibles et coller dans mon fichier destination.

    merci d'avance pour tous vos apports

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    bonjour j'ai fait un code qui ce que je veux.je le poste pour que d'autres puisse s'en servire; aussi pour que les PRO-VBA ou EXPERT de la PROGRAMMATION puis le parfaire à travers plusieurs questions dont j'en ai deux.

    lorsqu'un de mes fichiers s'ouvre, ce message s'affiche "ce classeur comporte des liaisons...Si ces liaisons fiables,mettez-les à jour pour ..." et je clique le bouton "mettre à jour" puis un autre message "voulez vous enregistrer le...." je clique sur "ne pas enregistrer" pour continue sans enregistrer une copier.

    j'aimerai que la mise à jour se fasse Question1: comment le faire? car Application.ScreenUpdating = true/false ne m'aide.
    puis que "ne pas enregistrer" se fasse automatique dans mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
     
    Sub Copierfichierfermeretcollerici()
     
        ' Déclaration des variables
        Dim base, base1 As Worksheet
        Dim i, colonne, ligne, lastline As Integer
        Dim rg, rg1 As Range
        Dim SheetName As String
     
        ' Initialisation de la variable ligne
        SheetName = ActiveWorkbook.ActiveSheet.Name '------------------------RECUPERATION DU NOM DE LA FEUILLE------------------------
        Set base = Sheets(SheetName)
     
            '---------------boucle retournant la ligne du jour prédedent dans mon classeur destination---------------
            For Each rg In base.Range("C3:AG3")
                If rg = Date - 1 Then
                    ligne = rg.Row
                    colonne = rg.Column
                End If
             Next rg
             '--------------------------fin de la boucle for----------------------------
     
        ' Boucle permettant de sélectionner plusieurs fichiers
        Do
            ' Sélection du classeur source à partir d'une fenêtre
            cheminfichier = Application.GetOpenFilename("Fichiers Excels (*.xlsx), *.xlsx")
     
            ' Si on clique sur Annuler dans la fenêtre, on sort de la boucle
            If cheminfichier = False Then
                Exit Do
            End If
     
            'Ouverture du classeur source
            Workbooks.Open cheminfichier
     
            ' Récupération du nom du classeur + extension
            For i = Len(cheminfichier) To 1 Step -1
                If Mid(cheminfichier, i, 1) = "\" Then Exit For
            Next
     
            nomfichier = Mid(cheminfichier, i + 1, Len(cheminfichier))
     
            Set base1 = Workbooks(nomfichier).Sheets("Data Graph")
     
            '---------------boucle retournant la ligne du jour prédedent dans mon classeur source---------------
             For Each rg1 In base1.Range("B1:B1000")
                If rg1 = Date - 1 Then
                    lastline = rg1.Row
                End If
             Next rg1
             '--------------------------fin de la boucle for----------------------------
     
            ' Copie des valeurs entre les classeurs
     
            '------------------------------INVENTAIRE------------------------------------
            ThisWorkbook.Sheets(SheetName).Cells(ligne + 1, colonne) = Workbooks(nomfichier).Sheets("Data Graph").Range("AV" & lastline).Value  '---------INVENTAIRE CASSE       trouver la derniere ligne sur AS
            ThisWorkbook.Sheets(SheetName).Cells(ligne + 2, colonne) = Workbooks(nomfichier).Sheets("Data Graph").Range("BA" & lastline).Value     '---------TENEUR INVENTEUR MINERAI
     
     
            ' Fermeture du classeur source
            Workbooks(nomfichier).Close
     
       Loop
     
    End Sub

    je pense que mon code peut se faire sans demander une action à l'utilisateur; question intermédiaire: comment le faire?

    question 2

    dans mon classeur source,je veux dupliquer (code VBA) ma feuille mais que l'affichage du nombre de colonne se fasse selon le nombre de jour du mois; comment le faire ?

    votre aide me sera précieuse, merci d'avance

  12. #12
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Bordialo, Bonjour le Forum

    1 - Mise à jour automatique des liaisons

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.AskToUpdateLinks = False
    ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
    2 - Calcul du nombre de jour du mois

    Calculer la série de date (DateSerial) du 1er du mois suivant de l'année
    Retirer 1 de ce nombre
    Calculer le jour (Day) de cette série de date

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    bonjour / bonsoir
    après une semaine de repos, je suis de retour pour la poursuite de mon projet

    j'ai utilisé la fonction qui m'a été proposé pour la mise à jour automatique en arrière plan mais cela n'a pas resolu mon problème
    j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True
    mais rien; j'attend votre aide encore

  14. #14
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True
    Cela sert à ré-activer la mise à jour de l'écran quand elle a été suspendue avec False et rien d'autre. Cela n'a aucun effet sur la mise à jour des données.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    ok merci pour ton intervention, seulement même quand je l'initialise à FALSE cette notification s'affiche.

    mon objectif c'est qu'à l'ouverture du fichier le COPIER COLLER se fasse sans notification

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 13
    Points : 2
    Points
    2
    Par défaut réaliser un graphique à partir du fichier
    voici la suite de ma tâche
    j'ai réalisé un graphique à partir de quelques lignes de ma feuille mensuelle de JANVIER.je dois garder ce graphique sur une autre feuille avec un menu déroulante permet d'afficher les mois + L'année.

    Travail A Faire : je dois permet à l'utilisateur de cliquer un mois donné dans la liste déroulante et la courbe du graphique évolue selon les données journaliers du mois sélectionné. ainsi sur le même graphique lorsque l'utilisateur sélectionne un mois donné , la tendance de la courbe s'affiche

    celui ou celle qui a déjà fait un travail similaire pourra me joindre le fichier
    j'attend votre aide. Merci d'avance

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo