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 :

Programme pour figer et reporter des informations [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Apprentie ingénieur
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Apprentie ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut Programme pour figer et reporter des informations
    Bonjour à tous,

    J'ai actuellement un fichier A qui me permet de réaliser des offres de prix pour nos clients, on travail avec un seul fichier que l'on actualise à chaque fois.
    Pour avoir une gestion des stocks en temps réel en fonction des commandes que l'on réaliser, j'ai mon fichier B qui me permet de récupérer les données nécessaires, tel que : La date, l'OF, la quantité nécessaire de matière ainsi que mon solde.

    Le problème que je rencontre c'est que je n'ai aucune idée de comment je peux figer mes informations et incrémenter les nouvelles sur la ligne en dessous et sans créer 12000 version de mon fichier A, exemple:

    Fichier A : cellule A2 --> Date 01/09/2025 - cellule B2 --> OF 2000 - cellule L4 --> QT 15000 pièces.

    Fichier B : ligne 2, cellule A2 --> Date 01/09/2025 - cellule B2 --> OF2000 - cellule B3 --> QT 15000.

    Je modifie mon Fichier A avec cellule A2 --> Date 11/09/2025 - cellule B2 --> OF 365 - cellule L4 --> QT 2000 pièces

    Sur mon fichier B devient :
    ligne 2, cellule A2 --> Date 01/09/2025 - cellule B2 --> OF2000 - cellule B2 --> QT 15000
    ligne 3, cellule A3 --> Date 11/09/2025 - cellule B3 --> OF365 - cellule B3 --> QT 2000

    Si des personnes charitables veulent bien m'aider à résoudre ce casse-tête cela serait fort sympathique, s'il vous plaît.

    Merci d'avance.

    Cordialement,

  2. #2
    Membre Expert
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 334
    Par défaut
    Bonjour
    il est possible de passer par Power Query pour réaliser cette tâche

    exemple avec un "fichier A.xlsx" enregistré dans C:\Temp
    Nom : Capture d'écran 2025-09-01 185923.png
Affichages : 142
Taille : 6,1 Ko

    et un "fichier B" qui va lire le contenu du fichier A et le coller à la suite d'un tableau "Synthèse"

    une requête "Offre" pour lire les cellules A2 [Column1]{1}, B2 [Column2]{1} et L4 [Column12]{3} du fichier A
    NB, les listes commencent par l'index 0 dans Power Query, la ligne 2 = l'index 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let
        Source = Excel.Workbook(File.Contents("C:\Temp\Fichier A.xlsx"), false),
        Data = Table.FromRows({{Source[Data]{0}[Column1]{1}, Source[Data]{0}[Column2]{1},Source[Data]{0}[Column12]{3}}},
                                             Table.ColumnNames(Excel.CurrentWorkbook(){[Name="Synthèse"]}[Content]))
    in
        Data
    et une requête "Synthèse" qui s'autoréférence et ajoute la table "Offre" à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let
        Source = Excel.CurrentWorkbook(){[Name="Synthèse"]}[Content],
        #"Lignes filtrées" = Table.SelectRows(Source  & Offre, each [Date] <> null and [Date] <> ""),
        #"Type modifié" = Table.TransformColumnTypes(#"Lignes filtrées",{{"Date", type date}, {"QT", type number}})
    in
        #"Type modifié"
    Je filtre ici sur les dates non vides pour éviter d'intégrer des données inutilement s'il n'y a rien dans le fichier A
    Il faut que le fichier A soit enregistré lors de l'actualisation de la table "Synthèse"
    On pourrait ajouter une suppression des doublons pour éviter d'avoir plusieurs fois les mêmes données

    Nom : Capture d'écran 2025-09-01 191147.png
Affichages : 140
Taille : 5,5 Ko

    Faire une recherche sur l'autoréférencement au besoin ("power query self referencing")

    Stéphane

  3. #3
    Candidat au Club
    Homme Profil pro
    Apprentie ingénieur
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Apprentie ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut information complémentaire
    Bonjour Raccourcix,

    Merci beaucoup pour ta réponse et est-il possible d'avoir un peu plus d'information car tout n'est pas des plus limpide pour moi :/

    La feuille A que je créé, est un fichier excel "type (mon devis)".
    Le fichier B, c'est aussi un fichier excel type avec une macro correspondant à la lecture du fichier A et je dois créer un 3ème fichier "synthèse" avec la mise en place du second code dans éditeur power query?

    Ou je dois créer un fichier B qui relate les info du fichier A avec la macro + l'édition synthèse via power query ou tout en power query?

    Merci d'avance pour tes réponses.

    Cordialement.

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 446
    Par défaut
    A mon avis, c'est encore le genre de demande qu'une intelligence artificielle aura facile de répondre, cela en donnant des explications détaillées. Une réponse que j'ai reçu de deepseek:
    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
    Option Explicit
     
    Sub TransfererDonnees()
        Dim wbSource As Workbook
        Dim wbDest As Workbook
        Dim wsSource As Worksheet
        Dim wsDest As Worksheet
        Dim CheminFichierB As String
        Dim DerniereLigne As Long
     
        ' Définir le chemin du fichier B (à adapter)
        CheminFichierB = "C:\Chemin\Vers\FichierB.xlsx" '  Remplacez par le bon chemin
     
        ' Initialiser les objets
        Set wbSource = ThisWorkbook                     ' Fichier A (celui contenant la macro)
        Set wsSource = ActiveSheet                      ' Feuille source
     
        ' Ouvrir le fichier B
        Set wbDest = Workbooks.Open(CheminFichierB)
        Set wsDest = wbDest.Worksheets("NomFeuille")    ' Remplacez par le bon nom
     
        ' Trouver la dernière ligne occupée
        DerniereLigne = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row + 1
     
        ' Copier les données
        With wsSource
            wsDest.Cells(DerniereLigne, "A").Value = .Range("A2").Value ' copie Date (A2) en colonne A
            wsDest.Cells(DerniereLigne, "B").Value = .Range("B2").Value ' copie Offre (B2) en colonne B
            wsDest.Cells(DerniereLigne, "C").Value = .Range("L4").Value ' copie Quantité (L4) en colonne C
        End With
     
        ' Sauvegarder et fermer le fichier B
        wbDest.Close SaveChanges:=True
     
        ' Nettoyer les objets
        Set wsDest = Nothing
        Set wbDest = Nothing
        Set wsSource = Nothing
        Set wbSource = Nothing
     
        MsgBox "Données transférées avec succès!"
    End Sub
    Cette macro est à déposer et utiliser dans le fichier A.
    A améliorer!
    Bonne continuation.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Par défaut
    Citation Envoyé par deathmihawk Voir le message
    La feuille A que je créé, est un fichier excel "type (mon devis)".
    Le fichier B, c'est aussi un fichier excel type avec une macro correspondant à la lecture du fichier A et je dois créer un 3ème fichier "synthèse" avec la mise en place du second code dans éditeur power query?

    Ou je dois créer un fichier B qui relate les info du fichier A avec la macro + l'édition synthèse via power query ou tout en power query?
    Un seul fichier (B) sera nécessaire.
    Il contiendra les 2 requêtes Power Query.
    Aucune macro n'est nécessaire, on peut l'enregistrer en classeur Excel simple (.xlsx).

  6. #6
    Candidat au Club
    Homme Profil pro
    Apprentie ingénieur
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Apprentie ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut Information trouvé
    Bonjour à tous,

    Merci pour vos retour rapide, j'ai pu trouver la solution à mon problème grâce EricDng.

    Merci aussi Deedolith pour ton aide mais je dois travailler sur plusieurs centaines de fichier sur la boucle final.

    Bonne journée à vous.

    Cordialement,

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/01/2011, 22h12
  2. programmation pour éviter le message: "des liaisons existent.."
    Par babou466 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2009, 15h29
  3. Réponses: 1
    Dernier message: 07/09/2006, 11h03

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