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 :

Remplissage automatique tableau Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut Remplissage automatique tableau Excel
    Bonjour à tous,

    Etant actuellement novice en VBA, je cherche à simplifier le remplissage d'un tableau Excel.

    Le sujet a peut être déjà été traité dans un autre sujet mais je n'ai pas trouvé les informations répondant à mes questions.

    Je possède un fichier excel que je complète toutes les semaines avec des informations extraites au format excel depuis une base de données (les colonnes sont toujours au même emplacements),
    Chaque semaine, je complète mon tableau excel en copiant les informations extraites de la bdd.

    Je ne sais pas si c'est possible:
    - Compléter mon tableau alors que le classeur source n'a jamais le même nom (de manière simple boite dialogue pour sélectionner le fichier source ou autre) ?
    - Les données choisies peuvent être automatiquement copiées à la suite des anciennes ?
    - Copier que certaines colonnes comme tous les champs sont présents sur l'extraction de la bdd.

    Merci encore pour votre aide

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Ternote Voir le message
    de manière simple boite dialogue pour sélectionner le fichier source ou autre) ?
    GetOpenFilename pour récupérer le nom https://docs.microsoft.com/fr-fr/off...etopenfilename
    Puis un Workbooks.Open pour ouvrir le fichier. https://docs.microsoft.com/fr-fr/off...workbooks.open

    - Les données choisies peuvent être automatiquement copiées à la suite des anciennes ?
    Pour la copie : https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)
    Pour trouver la dernière ligne : https://msdn.microsoft.com/fr-fr/lib...9(v=office.15)

    - Copier que certaines colonnes comme tous les champs sont présents sur l'extraction de la bdd.
    Copier colonne par colonne.

  3. #3
    Membre actif Avatar de zipbox
    Homme Profil pro
    Excel VBA
    Inscrit en
    Juillet 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Excel VBA

    Informations forums :
    Inscription : Juillet 2004
    Messages : 49
    Par défaut
    Bonjour,

    Voici un exemple à adapter :

    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 load_fichier_xls()
      '
      Dim f As String ' fichier à ouvrir
      Dim L As Long   ' ligne max à récup
      '
      Const C1 As String = "A"   ' colonne à récup : début
      Const C2 As String = "E"   ' colonne à récup : fin
      Const d As String = "data" ' onglet de réception
      '
      f = Application.GetOpenFilename(",*.xlsx"): If (f = "Faux") Then Exit Sub
      '
      Workbooks.Open Filename:=(f) ' ouvre le fichier à copier
        '
        Range(C1 & 1).Select
        Selection.End(xlDown).Select
        '
        L = ActiveCell.Row ' détecte la dernière ligne à copier
        '
        Range(C1 & 1 & ":" & C2 & L).Select
        Selection.Copy
        '
      ActiveWindow.Close
      '
      Sheets(d).Select: Cells(1, 1).Select ' se positionne sur l'onglet réception
      '
      L = 0
      '
      Do
        L = L + 1
        If (Cells(L, 1).Value = "") Then Exit Do ' détecte la ligne libre
      Loop
      '
      Cells(L, 1).Select ' se positionne sur la ligne libre
      '
      ActiveSheet.PasteSpecial: Cells(1, 1).Select ' copie les données
      '
      MsgBox " fin... "
      '
    End Sub

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,



    Citation Envoyé par Ternote Voir le message
    ... Je ne sais pas si c'est possible:
    - Compléter mon tableau alors que le classeur source n'a jamais le même nom (de manière simple boite dialogue pour sélectionner le fichier source ou autre) ?
    - Les données choisies peuvent être automatiquement copiées à la suite des anciennes ?
    - Copier que certaines colonnes comme tous les champs sont présents sur l'extraction de la bdd.

    Merci encore pour votre aide
    tu peux utiliser les filesDialog

    dont voici un exemple
    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
     
         'ouverture d'un fichier par boite FileDialog
    '********************************************************************************
        'Declaration d'une variable comme objet FileDialog
        Dim fd As FileDialog
     
        'Creation d'un objet FileDialog comme un File Picker dialog box.
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
     
        'Déclaration d'une variable contenant le "path" de style variant
        Dim vrtSelectedItem As Variant    'obligatoirement de type variant
     
        With fd
     
            'donner le Path initial lors de l'affichage de la boite filedialog.
            'Cela permet d'arriver directement sur le repertoire addéquat
            '.InitialFileName = "D:\Travail_tempo\Comptage\Rama-ses\"
            .InitialFileName = "\\Consultation\Donnees_techniques\LOG"
     
     
            'Utilisation de la méthode show pour afficher le File Picker de la boite de dialogue et
            '   retourne la valeur de l'action de l'utililisateur.
            If .Show = -1 Then
     
                'Step through each string in the FileDialogSelectedItems collection.
                For Each vrtSelectedItem In .SelectedItems
     
                    'vrtSelectedItem est un String contenant le "path"  de chaque item selectionné.
                    'affichage du "PATH et du fichier selectionné" dans une boite message
                    'MsgBox "Vous avez sélectionné : " & vrtSelectedItem
                    file_select = vrtSelectedItem
                Next vrtSelectedItem
     
            'Au cas ou l'utilisateur appuis sur Cancel...
            Else
                'Dans ce programme je ne fais rien.
            End If
        End With
     
        'Pour le cas rien.
        Set fd = Nothing
     
    '**********************************************************************************
        Workbooks.Open file_select
    c'est pratique et très simple à utiliser


    pour ce qui est de ton deuxième point je te conseille de faire un tableau structuré (il s'ajuste automatiquement par ajout en dessous de lui-même)

    Pour ton troisième point et bien colonne par colonnes comme te l'as dit Menhir me parrait aussi bien adhéquat


    A bientôt

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut
    Merci pour vos retours!

    Igloobel, le code marche parfaitement!

    Concernant le fait d'insérer certaines colonnes dans le fichier cible, il vous semble plus simple de copier coller manuellement les colonnes souhaitées.

    Est-il plus simple :

    Macro 1:

    Création d'une nouvelle feuille (2)+ importation des données depuis la bdd via code précédemment fourni.

    Macro 2 :

    - Affecter les différentes colonnes feuille (2) aux colonnes feuille (1) pour ne garder que les informations nécessaires.
    - Suppression de la feuille (2) une fois collé dans feuille (1).

    J'espère que ça n'est pas trop tordu

    Merci encore!

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Encore plus simple
    - tu ouvres ton fichier BDD
    - Tu copie colle dans feuille1 les colonnes nécessaires

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Par défaut
    Igloobel,

    Effectivement c'est ce qui est fait actuellement x). Mais avec 10 colonnes à prendre sur les 43 sorties de la bdd ça représente un paquet de manipulation (+ le facteur erreur comme différentes champs dates, noms personnes, etc.).

    C'est pour ça que faire référence aux même colonnes serait le plus sécurisé.

    Merci

  8. #8
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Et ces 10 colonnes sont-elles toujours à la même place ?

    Si oui il te suffit de faire une macro avec l'enregistreur de macro et il te fera la même chose à chaque fois

Discussions similaires

  1. Remplissage automatique Tableau JS\PHP
    Par Surinox dans le forum AJAX
    Réponses: 2
    Dernier message: 01/11/2016, 11h56
  2. [PPT-2010] mise a jour automatique tableau excel dans powerpoint
    Par yeti7984 dans le forum VBA PowerPoint
    Réponses: 6
    Dernier message: 27/07/2014, 13h28
  3. Réponses: 6
    Dernier message: 13/04/2014, 14h59
  4. [XL-2013] mise a jour automatique tableau excel dans pps
    Par yeti7984 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/09/2013, 15h39
  5. mise à jour automatique tableau excel par macro
    Par fredo49 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2011, 11h37

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