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 :

mise à jours de données venant d'un autre fichier [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut mise à jours de données venant d'un autre fichier
    Bonjour,

    Ayant chercher vainement sur la toile, je me permet d'effectuer cette demande d'aide.

    pour expliquer brièvement ce que je cherche à effectuer:
    je travaille avec un logiciel protégé qui ne me permet pas de gérer des commandes, par contre, il est capable de me sortir des listing en format .CSV
    Je suis occupé à concevoir via Excel un fichier pouvant gérer mes commandes automatiquement, mais j'aurai besoin d'une mise à jour des stock (chiffre se trouvant dans le fichier .CSV)
    Je me suis lancé dans un code permettant d'ouvrir le CSV sauvegardé extrait du logiciel protégé et aimerai que le stock de chacune de mes références dans mon classeur soit mise à jour.
    Je pensais au départ à la formule "rechercheV", mais j'aimerai que cette mise à jour ne se fasse que lorsque j'en ai besoin et pas à chaque ouverture de mon classeur.
    Je suis parti en vba sur la base de "recherchev", mais je ne pense pas que cela sois la meilleure de solutions.
    auriez-vous une idée vers quoi me lancer?
    voici ci-dessous mon code avec rechercheV qui n'est pas fonctionnel d'ailleurs (mais si j'ai bien tout compris, mon code copierai un recherchev dans ma cellule stock, mais je désirerai simplement la valeur après ma demande de mise à jour (bouton ou lancement d'une procédure lors d'une autre action en VBA)
    Info, je suis débutant VBA Excel, mais acharné, lol

    Merci de votre aide

    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 UPDATE_Stocks()
     
    Dim Chemin As String
    Dim wk_fichier1 As Workbook, wk_fichier2 As Workbook
    Dim ws_feuil1 As Worksheet
    Dim ws_feuil2 As Worksheet
    Dim dl_CdeAuto As Long, dl_ListeStock As Long
     
     
    'Ouverture du fichier contenant les données STOCK
    Chemin = "C:\Users\verst\OneDrive - Office 365 GPI\Bureau\MAGASIN\cde automatiques\Liste_des_stocks_Stock_Cathedrale.csv"
    Workbooks.Open Filename:=Chemin
     
     
    'Définition des variables fichiers et onglets
    Set wk_fichier1 = Workbooks("Liste_des_stocks_Stock_Cathedrale.csv")
    Set wk_fichier2 = Workbooks("Cde_Auto_New.xlsm")
    Set ws_feuil1 = wk_fichier1.Worksheets("Liste_des_stocks_Stock_Cathedra")
    Set ws_feuil2 = wk_fichier2.Worksheets("BD Articles")
     
    'identification des dernières lignes des tableaux concernés
    dl_ListeStock = ws_feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    dl_CdeAuto = ws_feuil2.Cells(Rows.Count, 1).End(xlUp).Row
     
     
      With Workbooks("Cde_Auto_New.xlsm").Sheets("BD Articles")
     
      Range("H2:H" & dl_CdeAuto).FormulaR1C1 = "=VLookup(RC[-7], [Liste_des_stocks_Stock_Cathedrale.xlsm] !A28:G2000, 7, False)"
     
      End With
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Vous n'avez pas précisé votre version d'excel mais si c'est 2010 ou supérieur je chargerais le fichier CSv avec PowerQuery plutôt qu'avec VBA.
    La fonction RECHERCHEV ou la fonction EQUIV imbriquée à INDEX ou encore RECHERCHEX si votre version le permet vous permettrait de mettre à jour le stock et donc au final pas besoin de VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2022
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2022
    Messages : 141
    Par défaut
    Je ne peux que voter pour la solution suggérée par Phillipe Tulliez, que je salue au passage !

  4. #4
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Bonsoir et merci de votre intérêt pour le sujet.

    Je suis sur office 365.

    Pour ce qui est de l'utilisation en vba, cela me permet de lancer la mise à jour dés que désiré. si j'applique une formule type rechercheV dans mon classeur, à chaque ouverture de celui-ci il recherchera les liens et ce n'est pas du tout le but recherché.

    pour info tout en passant par une autre code trouvé sur le net et modifié pour l'occasion. je pense que ce code serait plus en adéquation avec ce que je recherche, mais n'ayant pas de notions assez approfondies, le résultat n'est pas encore obtenu.

    Je poste ci-dessous l'explication et le code utilisé, peut-être vos eux avertis trouverons la faille assez rapidement



    Mon Tableau1 à mettre à jour comporte en colonne A l'élément à repérer dans le Tableau2 (situé en colonne A aussi) et prendre les données se trouvant en colonne B et C du Tableau2 afin de mettre respectivement le Tableau1 à jour en colonne B et H; les données en B du Tableau2 sont à placer en B du tableau1 et les données en C du Tableau2 sont à placer en H du Tableau1.

    Idem pour les données manquantes dans mon Tableau1, le A du tableau2 doit se mettre en A du tableau 1, le B du Tableau2 doit se mettre en B du Tableau1 et enfin le C du Tableau2 doit se mettre en H du Tableau1 sans modifier les autres colonnes.

    le code actuel ci-dessous m'efface malheureusement les données de la colonnes A du Tableau1, mais remplit correctement le B et le H

    Etant novice et le code utilisé inhabituel pour moi, pourriez-vous me guider sur le soucis.

    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
    Sub UPDATE_Stock_et_Ref()
     
    Dim Chemin As String, Fichier As String, J As Long, I As Integer, Cel As Range
    Dim T1(1 To 2, 1 To 8) As String
    Dim Ws As Worksheet
     
      Application.ScreenUpdating = False
      Set Ws = ActiveSheet
      Chemin = ThisWorkbook.Path & Application.PathSeparator
        'désigne la variable de notre fichier Cde Auto
      Fichier = "Liste_des_stocks_Stock_Cathedrale.csv"
      'désigne la variable du listing stock exporté de MatTrack
      If Dir(Chemin & Fichier) = "" Then
        MsgBox "Fichier pour mise à jour introuvable" & vbCr & Fichier
        Exit Sub
        'Condition si le listing stock n'est pas trouvé afin de sortir de la procédure
      End If
      With Workbooks.Open(Chemin & Fichier)
        With .Sheets(1)
            'Prend en compte la feuille 1 du fichier qu'il vient d'ouvrir (si besoin de mettre le nom de l'onglet, placer celui-ci entre guillemets
          For J = 4 To .Range("A" & Rows.Count).End(xlUp).Row
            ' Parcourt de la ligne 4 dans la colonne A jusqu'à la dernière cellule non vide de cette colonne (références MatTrack à rechercher)
     
        T1(1, 2) = .Cells(J, "B")
        T1(1, 8) = .Cells(J, "C")
     
            Set Cel = Ws.Columns("A").Find(what:=.Range("A" & J), LookIn:=xlValues, lookat:=xlWhole)
                'recherche les correspondance des codes MatTrack entre la collone A du fichier des Cdes Auto et la colonne A du listing MatTrack
            If Not Cel Is Nothing Then
              Cel.Resize(1, UBound(T1, 2)) = T1
                'Si correspondance code MatTrack Cde Auto trouvée dans le listing Cde Auto, mise à jour des données description et Stock
            Else
              Ws.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(1, UBound(T1, 2)) = T1
                'insère les code MatTrack manquants venant du listing en bas du tableau
            End If
          Next J
        End With
        .Close savechanges:=False
            'ferme le listing sans le sauvgarder
      End With
     
    End Sub

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour à tous
    Citation Envoyé par trouvaille Voir le message

    Je suis sur office 365.

    Pour ce qui est de l'utilisation en vba, cela me permet de lancer la mise à jour dés que désiré.
    C'est pareil avec POwerQuery

  6. #6
    Membre confirmé
    Homme Profil pro
    Logisitique
    Inscrit en
    Janvier 2018
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Logisitique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 192
    Par défaut
    Merci de votre conseil, mais la solution est possible via vba je suppose...?

    une grosse partie de ce fichier est déjà codé en VBa, je désirerai continuer en ce sens si possible

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2017, 18h56
  2. Réponses: 0
    Dernier message: 09/08/2013, 20h52
  3. [XL-2003] Mise à jour de données d'un fichier excel vers un autre
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/03/2010, 14h37
  4. [AC-2000] Mise à jour des données d'un formulaire à partir d'un autre
    Par Vincent79 dans le forum IHM
    Réponses: 6
    Dernier message: 03/09/2009, 14h45
  5. Mise à jour de données à partir d'une autre table
    Par rsc dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/04/2006, 10h53

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