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 :

Importer les nouvelles données d'un onglet [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien qualité informatique
    Inscrit en
    Mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien qualité informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 18
    Par défaut Importer les nouvelles données d'un onglet
    J'ai une base de données qui est rempli par les technicien et je souhaite importer cette base de données et ensuite j'ai des macro qui tourne dessus.
    Le problème est que j'ai des formule de calculs dans mon fichier à mois qui calcul le prix des pièces en tant réelle donc je ne souhaite pas important la totalité de la base de données à chaque fois mais juste les dernière données.

    En gros je souhaite que ma macro regarde ce que j'ai déjà dans mon onglet et compare avec l'onglet dans le fichier des technicien les données et m'importe juste ceux que je n'ai pas.
    Sachant que j'ai une colonne avec un ID unique.

    J'ai ce début de code mais cela ne fonctionne pas.

    La macro ouvre bien le fichier et semble compté mais les nouvelles lignes ne sont pas importé.

    Voici mon code actuelle :
    Sachant que mon Onglet à importer se nomme "HERIN2" et on importe les nouvelle données dans l'onglet "HERIN".

    J'ai surement dû effectuer une erreur dans le code
    Merci à toi.

    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
    Private Sub Importation_Click()
     
    Dim derlig As Long, i As Long, dl As Long, maplage As Range
    derlig = Range("B" & Rows.Count).End(xlUp).Row
    With Sheets("HERIN").Select 'nom de la feuille qu'ouvre ce bouton
        dl = Sheets("HERIN").Range("B" & Rows.Count).End(xlUp).Row
        Set maplage = Sheets("HERIN").Range("B2:B" & dl)
    End With
    Workbooks.Open Filename:="S:\Repair\INFOS COMMUNES\HERIN 2\HERIN2.xlsm"
    Sheets("HERIN2").Select
    For i = 2 To derlig
        If Application.WorksheetFunction.CountIf(maplage, Range("B" & i).Value) = 0 Then
            Sheets("HERIN2").Range("B" & dl + 1).Value = Range("B" & i).Value
        End If
    Next
    End Sub

  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
    Je pense que ton analyse est fausse. A mon avis, chaque fois que tu lances ta macro, il y a insertion d'une seule nouvelle ligne, non ?

    Dans ta boucle For, tu n'incrémentes pas la variable dl, ce qui fait que chaque nouvelle insertion de ligne écrase la précédente.

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Bonjour,
    Tu t'emmêles les pattes entre les fichiers et avec les Select.
    Select/ Activate et Cie => à bannir, car ça entraîne souvent des problèmes (comme ici).
    Dans la continuité, tes variables sont tantôt utilisées dans un fichier, tantôt dans l'autre. Par exemple dl : tu le définis comme étant la dernière ligne de HERIN, puis tu l'utilises pour compléter HERIN2.
    Regarde aussi comment utiliser With...End With, tu l'utilises mal.

    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
    Private Sub Importation_Click()
     
    Dim dlSynth As Long, i As Long, dlSource As Long, maplage As Range
    Dim shSource As Worksheet
    Dim shSynthese As Worksheet
     
    Workbooks.Open Filename:="S:\Repair\INFOS COMMUNES\HERIN 2\HERIN2.xlsm"
    Set shSource = Workbooks("HERIN 2").WorkSheets("HERIN2")
    Set shSynthese = ThisWorkbook.WorkSheets("HERIN")
     
    dlSynth = shSynthese.Range("B" & Rows.Count).End(xlUp).Row + 1        'première ligne vide du fichier synthèse
    dlSource = shSource.Range("B" & Rows.Count).End(xlUp).Row         'dernière ligne du fichier source
     
    Set maplage = shSynth.Range("B2:B" & dlSynth)
     
    For i = 2 To dlSource             'boucle sur le fichier source
          If Application.WorksheetFunction.CountIf(maplage, shSource.Range("B" & i).Value) = 0 Then        'SOMME.SI pour voir si la valeur du fichier source existe déjà dans le fichier synthèse
                shSynthese.Range("B" & dlSynth).Value = shSource.Range("B" & i).Value          'on recopie la valeur
                dlSynth = dlSynth +1        'on rajoute +1 pour la prochaine valeur à copier (en-dessous)
          End If
    Next
    End Sub

    Est-ce que tu comprends ? Et est-ce que tu vois comment adapter ?

  4. #4
    Membre averti
    Homme Profil pro
    Technicien qualité informatique
    Inscrit en
    Mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien qualité informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 18
    Par défaut
    Je débute donc j'analyse petit à petit mais ca m'a l'air un peu plus clair, merci de ton aide
    Par contre lorsqu'il ouvre le fichier source j'ai une erreur d'execution 9
    Nom : erreur 9.jpg
Affichages : 171
Taille : 13,7 Ko

  5. #5
    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 geekpok Voir le message
    Par contre lorsqu'il ouvre le fichier source j'ai une erreur d'execution 9
    Quelle ligne de code est désignée par le débugage ?

  6. #6
    Membre averti
    Homme Profil pro
    Technicien qualité informatique
    Inscrit en
    Mars 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien qualité informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 18
    Par défaut
    Voici la ligne en jaune dans le débogage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set shSource = Workbooks("HERIN2").Worksheets("HERIN2")

  7. #7
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Fais bien attention à tes noms de classeurs et feuilles.
    D'après ce que j'ai compris, ton classeur s'appelle HERIN 2 (avec un espace), alors que ta feuille s'appelle HERIN2 (sans espace). Il faut que tout soit cohérent avec ton code.

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

Discussions similaires

  1. [XL-2010] Importer uniquement les nouvelles données
    Par thierry31140 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 19/04/2016, 15h27
  2. Réponses: 18
    Dernier message: 17/03/2009, 18h25
  3. Réponses: 2
    Dernier message: 14/10/2008, 10h38
  4. Réponses: 2
    Dernier message: 07/10/2008, 12h57
  5. [CR9 et VB6] n'affiche pas les nouvelles donnée
    Par moumoule17 dans le forum SDK
    Réponses: 3
    Dernier message: 22/04/2005, 13h03

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