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 :

Transfert de données entre deux classeurs [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Transfert de données entre deux classeurs
    Bonjour,

    Merci d'avance pour votre aide !

    Voilà mon problème, je suis actuellement entrain de créer un fichier Excel avec une feuille base de données(qui me sert à alimenter le reste du classeur), deux feuilles TCD et deux feuilles de graphiques.
    Grâce à quelques bidouillages j'arrive à compléter et actualiser mes TCD et graphiques de manière automatique dès qu'une information est inscrite dans ma base de données.
    Ma base de données est basée sur l'année encours, donc de nombreuses cellules sont encore vite mais pas de soucis grâce à ma formule =SI(D2="";"#N/A";NO.SEMAINE(B2;2)) je n'affiche que les lignes complètes dans le reste du classeur.
    Je reçois un rapport chaque semaine avec les différentes informations nécessaire pour compléter ma base de données, ce rapport excel porte le nom de grid.xls, il sera toujours appelé ainsi et il sera toujours enregistré au même endroit. Cependant le rapport de la semaine 3 va venir remplacer celui de la semaine 2 au bout d'un certains temps. Je cherche donc un moyen de compléter ma base de données automatiquement avec les rapports qui me sont envoyés chaque semaine, est-il possible d'articuler le transfert de données autour de la date ? Pour que les données partent directement dans les bonnes cellules ?

    Pour résumer :
    -Je dispose d'un fichier excel à compléter
    -Les rapports me permettant de compléter ce fichier me sont envoyés une fois par semaine
    -Je voudrais remplir automatiquement ma base de donnée avec les rapports reçus

    Je vous joint le fichier que j'ai créé, seule la feuille " Données" est importante. Je vous joint également un exemple du rapport que je reçois chaque semaine, les cellules arrivent toujours sous format "Texte".

    J'utilise Excel depuis maintenant un petit mois donc je suis loin de le maîtriser parfaitement
    Je suis impatient de découvrir vos conseils où solutions pour m'aider à avancer !
    Merci encore,
    Alexandre
    https://www.cjoint.com/c/JGdoEYTDaqJ
    https://www.cjoint.com/c/JGdoFOQWaCJ

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Concernant votre formule, pourquoi afficher "#NA" s'il n'y a rien?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D4="";"";NO.SEMAINE(B4;2))
    Lors de la première intervention sur le forum, beaucoup de personnes n'ouvrent pas les fichiers joints, donc pas de réponses, il est préférable dans un premier temps de déposer une capture d'écran. Pour déposer une image (ou capture d'écran), utilisez la quatrième icône en partant de la droite de la deuxième rangée au-dessus de cette fenêtre quand vous posez votre question?

    Pour déposer un fichier, il faut utiliser la 3ème icône en partant de la droite de la première rangée( le trombone)

    Ici, les capture d'écran de vos 2 fichiers
    fichier "Grid"
    Pièce jointe 574377

    le fichier à compléter
    Pièce jointe 574378

    Comme les entêtes des colonnes des 2 tableaux sont différentes avec un nombre de colonnes différent, il faudrait peut-être indiquer quelles colonnes de "Grid" alimentent quelles colonnes du fichier de destination.

    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour merci pour vos conseils !

    La formule me permet de ne pas afficher dans mes TCD et Graphiques les semaines n'étant pas encore complété, cela dans le but de ne pas pollué les graphiques avec des semaines vide. Je dois avouer ne pas avoir trouvé d'autres solutions..
    Autant pour moi... J'ai joint le mauvais fichier visiblement, j'ai ajouté en commentaire de chaque colonne le titre correspondant dans aux colonnes du fichier Grid.

    Je vous envoie rapidement en capture d'écran le nom des colonnes !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Pas évident d'envoyer une seule capture d'écran de tous les commentaires. Afin de ne pas polluer avec beaucoup trop d'images je vous ai noté la correspondance des colonnes. Avec sur la gauche les colonnes du fichier à compléter et sur la droite les colonnes du fichier grid qui lui correspondent.

    Fichier à compléter E1=C2 fichier grid
    Fichier à compléter F1=D2 fichier grid
    Fichier à compléter G1=E2 fichier grid
    Fichier à compléter H1=F2 fichier grid
    Fichier à compléter I1=G2 fichier grid
    Fichier à compléter J1=H2 fichier grid
    Fichier à compléter K1=I2 fichier grid
    Fichier à compléter L1=J2 fichier grid
    Fichier à compléter M1=K2 fichier grid
    Fichier à compléter N1=L2 fichier grid
    Fichier à compléter O1=M2 fichier grid

    Merci à vous !

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Vous avez oublié de préciser dans quelles colonnes se trouvaient les dates.
    Dans la macro ci-dessous, cangez les noms des fichiers et aussi la colonne des dates. En supposant qu'elles soient en colonne B dans les 2 fichiers.
    Pour le fonctionnement, ouvrez les 2 fichiers et lancez la macro à partir du fichier "Synthèse" ( le nom du fichier qui collecte les données)
    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
    Sub Recup_Donnees()
        Dim W1 As String, w2 As String
        Dim Derlig_f1 As Long, i As Long
        Dim f1 As Worksheet, f2 As Worksheet
        Dim x As Range
        Dim d As Date
     
        Application.ScreenUpdating = False
        W1 = "Fichier_grid.xlsx"
        w2 = "Fichier_Synthese.xlsm"
        Set f2 = Sheets("Données") 'Feuille des données du "Fichier_Synthese"
     
        Windows(W1).Activate 'fenêtre "Grid"
        Set f1 = Sheets("Feuil1") 'Feuille des données du "Fichier_grid"
        Derlig_f1 = f1.Range("B" & Rows.Count).End(xlUp).Row 'Dernière ligne de la feuille Grid
     
        For i = 3 To Derlig_f1 ' de la ligne 3 jusqu'à la dernière
            d = DateSerial(Year(f1.Cells(i, "B")), Month(f1.Cells(i, "B")), Day(f1.Cells(i, "B"))) 'relevé de la date en colonne B de la feuille "grid"
            Plage = f1.Range("C" & i & ":M" & i) 'on relève les valeurs de la feuille grid
            Windows(w2).Activate 'Sélection du fichier de synthèse
            With f2 ' dans la feuille "Données"
                Set x = .Columns(2).Find(d) 'Recherche de la date dans la colonne B
                If Not x Is Nothing Then ' si la date est trouvée
                    f2.Range(Cells(x.Row, "E"), Cells(x.Row, "O")) = Plage 'on recopie les valeurs dans synthèse
                End If
                Windows(W1).Activate 'Sélection du fichier grid
            End With
        Next i
        Set x = Nothing
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Cdlt

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Autre méthode, plus rapide, plus courte et plus directe
    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
    Sub Recup_Donnees2()
        Dim W1 As String, w2 As String
        Dim f1 As Worksheet, f2 As Worksheet
        Dim x As Range
        Dim d As Date
     
        Application.ScreenUpdating = False
        W1 = "Fichier_grid.xlsx"
        w2 = "Fichier_Synthese.xlsm"
        Set f2 = Sheets("Données") 'Feuille des données du "Fichier_Synthese"
     
        Windows(W1).Activate 'fenêtre "Grid"
        Set f1 = Sheets("Feuil1") 'Feuille des données du "Fichier_grid"
     
        d = DateSerial(Year(f1.Cells(3, "B")), Month(f1.Cells(3, "B")), Day(f1.Cells(3, "B"))) 'relevé de la date en colonne B de la feuille "grid"
        Plage = f1.Range("C3:M9") 'on relève les valeurs de la feuille grid
        Windows(w2).Activate 'Sélection du fichier de synthèse
        With f2 ' dans la feuille "Données"
            Set x = .Columns(2).Find(d) 'Recherche de la date dans la colonne B
            If Not x Is Nothing Then ' si la date est trouvée
                f2.Range(Cells(x.Row, "E"), Cells(x.Row + 6, "O")) = Plage 'on recopie les valeurs dans synthèse
            End If
        End With
        Set x = Nothing
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Cdlt

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2020
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour ARTURO83,

    Merci beaucoup pour votre aide !!

    Le premier code me mettais un message d’erreur " L'indice n'appartient pas à la sélection", j'ai donc essayé le code suivant qui lui fonctionne à merveille !
    Encore merci pour votre aide !

    Bonne journée à vous,
    Alexandre

    Edit: J'ai réussi à faire fonctionner le premier code également, c'était dû à une mauvaise manipulation de ma part !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] transfert de données entre deux classeurs fermés
    Par frihat mohamed dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/09/2011, 21h26
  2. Transfert de données entre deux bases
    Par RTDanjou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/03/2007, 15h53
  3. transfert de données entre deux sites en C
    Par menel dans le forum Réseau
    Réponses: 10
    Dernier message: 18/08/2006, 23h44
  4. transfert de données entre deux tables
    Par student007 dans le forum Access
    Réponses: 4
    Dernier message: 23/12/2005, 13h04
  5. Réponses: 5
    Dernier message: 30/11/2005, 16h41

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