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 à jour d'un fichier Excel via un autre fichier Excel


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
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Par défaut Mise à jour d'un fichier Excel via un autre fichier Excel
    Bonjour à Tous,

    Actuellement stagiaire dans une entreprise j'ai reçu la mission de créer quelque-chose permettant de mettre un fichier Excel à jour via un autre

    Je m'explique : J'ai un gros fichier catalogue avec beaucoup de lignes et plusieurs fichiers donnés par les fournisseurs le but final est de pouvoir mettre "automatiquement" à jour le fichier catalogue (notamment au niveau des prix) via l'un des fichiers fournisseurs soit par marque soit par référence en fonction des besoins.
    On m'a demandé de faire ça grâce à des macros et VBA mais c'est un langage que je n'ai pas encore appris

    Pour l'instant j'ai réussi a faire ceci :
    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
    Sub recherche()
    Dim Plage As Range
            Set Plage = Sheets("Feuil1").Columns(6)
    Dim Lignes(), i As Long
    Dim Texte As String
    Dim Flag As Boolean
     
        Rows().Interior.Color = RGB(255, 255, 255)
        Rows(2).Interior.Color = RGB(255, 153, 0)
     
    Dim resultat As String
     
         resultat = InputBox("Que recherchez vous ?", "Recherche Simple", "Marque")
     
    Flag = Find_Next(Plage, resultat, Lignes())
    If Flag Then
        For i = LBound(Lignes) To UBound(Lignes)
             Debug.Print Lignes(i)
             Rows(Lignes(i)).Interior.Color = RGB(255, 0, 0)
     
        Next i
    Else
        MsgBox "L'expression : " & resultat & " n'a pas été trouvée dans la plage : " & Plage.Address
    End If
     
    End Sub
     
     
    Function Find_Next(Rng As Range, Text As String, Tbl()) As Boolean
    Dim Nbre As Integer, Lig As Long, Cptr As Long
     
        Nbre = Application.CountIf(Rng, Text)
        If Nbre > 0 Then
            ReDim Tbl(Nbre - 1)
            Lig = 1
            For Cptr = 0 To Nbre - 1
                Lig = Rng.Find(Text, Cells(Lig, Rng.Column), xlValues).Row
                Tbl(Cptr) = Lig
            Next
        Else
            GoTo Absent
        End If
        Find_Next = True
        Exit Function
    Absent:
        Find_Next = False
    End Function
    Cela permet juste de surligner les lignes dont les produits appartiennent à une marque rentrée dans une fenêtre qui apparaît au lancement de la macro

    Avec mon niveau je doute de pouvoir avancer beaucoup plus loin sans aide extérieure car par un WebMaster il n'y a que des commerciaux et des comptables dans l'entreprise

    Je lance donc cet appel à l'aide
    Merci d'avance ^^

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    Je suis un peu dans la même situation et j'ai fais la façon suivante :
    - Je vais chercher le fichier extérieur afin de l'ouvrir dans mon classeur (dans une nouvelle feuille)
    - Je compile les deux tableaux dans une nouvelle feuille
    - Je supprime les doublons dans cette feuille finale

    Je n'ai pas trouvé de meilleure solution mais si quelqu'un peut aider...

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Par défaut
    J'y avais pensé aussi mais n'y a-t-il pas un risque de supprimer les mauvais doublons et de se retrouver avec les anciennes valeurs ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    Pas si tu définis bien tes conditions. Si tu as besoin d'un bout de code concernant ses éléments n'hésites pas

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Par défaut
    Et bien si je pars là dessus j'aurais en effet besoin de petites précisions ^^"
    - Comment fait on pour récupérer un fichier extérieur ?
    - Comment fait on pour rendre les "vielles" données prioritaires lors de la suppression des doublons ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Par défaut
    Avec ça tu vas chercher ton fichier il va s'ouvrir dans une feuille (manque juste le "FIN:" que j' t'incite à écrire à la toute fin de ta macro.

    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
     
    Dim Tab_Nom_Fichier() As String
    Dim Index_Fichier As Variant
    y = ActiveWorkbook.FullName  'récupère le chemin du fichier Excel actif
    x = ActiveWorkbook.Name
        Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
        Application.FileDialog(msoFileDialogFilePicker).InitialFileName = y
        Application.FileDialog(msoFileDialogFilePicker).Show
        If Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count = 0 Then GoTo FIN 'si l'on a appuyé sur Annuler
        For Index_Fichier = 1 To Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count 'selection des fichiers à copier dans la consolidation
            ReDim Preserve Tab_Nom_Fichier(Index_Fichier - 1)
            Tab_Nom_Fichier(Index_Fichier - 1) = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(Index_Fichier)
        Next
    Application.ScreenUpdating = False
    For Each Index_Fichier In Tab_Nom_Fichier
    If Index_Fichier = y Then GoTo FIN 'quand on n'a pas sélectionné de fichier à ouvrir et que l'on a appuyé sur OK ou Annuler
    Workbooks.Open Index_Fichier
    Next
     
    Z = ActiveWorkbook.Name
    With Workbooks(Z)
     .Sheets("Feuil1").Copy After:=Workbooks(x).Sheets(Workbooks(x).Sheets.Count)
    End With
    EN ce qui concerne l'autre question, j'ai un post ouvert la dessus je suis un peu en galère là

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/08/2014, 13h12
  2. [XL-2007] Plantage excel à la fermeture du fichier avec macro si autre fichier excel ouvert
    Par Systémicien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/03/2011, 09h00
  3. Ouverture d'une feuille excel via une autre feuille excel.
    Par JonathanMQ dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/01/2010, 22h12
  4. [XL-2002] Mise a jour automatique d'un master fichier Excel via d'autres fichiers filles Excel
    Par magninde dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2009, 14h08
  5. Mise à jour quotidienne d'une table via fichier texte
    Par chooky97150 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 31/08/2006, 22h00

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