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 :

exportation de données dans un autre classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Par défaut exportation de données dans un autre classeur
    Bonjour, j'aurai besoin d'un peu d'aide concernant l'exportation des données..

    dans un de mes classeurs j'ai le nom des employés ainsi que les horaires effectuées pour une journée J (date en C5)

    la plage possible pour les noms est E5:E11 et F5:F11 pour les heures.

    je souhaite parcourir la plage E5:E11, si une cellule est non nulle (Ei), stocker ce nom dans une variable, stocker l'heure (Fi) dans une variable, ouvrir le second classeur, chercher le nom stocké colonne A, chercher la date J ligne 1 et copier le nombre d'heure selon les résultats de ces recherches!
    si la date J n'est pas trouvé, sur la première ligne du second fichier, à la première cellule libre indiquer la date puis y copier les heures.

    mais je suis un peu perdu et je ne sais pas comment commencer..

    je vous joins le fichier de départ ("Fiche") et l'autre ("Heures"). j'ai commencé un morceau de code mais je ne sais pas trop comment faire pour copier les données ?
    dois-je passer par un tableau ??
    Fichiers attachés Fichiers attachés

  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 170
    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 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Petit exemple de code VBA utilisant la technique du filtre avancé.
    La data base se trouve en Feuil2 à l'adresse E4:F11 (Les étiquettes de colonnes en E4:F4 sont pour E4 Nom, F4, Heure).
    La zone de critère est la plage nommée pnCritere pour l'exemple sur la même feuille A1:A2 en A1 l'étiquette Heure (la même qu'en F4) en A2 le critère >0.
    Se mettre sur une cellule quelconque, d'une feuille vide, d'un classeur et faire tourner Main.
    Si la feuille n'est pas vide, création d'une feuille avec coloration de l'onglet en rouge.
    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
    Option Explicit
    Const shtFromName As String = "Feuil2" ' Nom de la feuille contenant les données à exporter
    Const Addr As String = "E4:F11" ' Adresse de la feuille 2
    Const rngCritName As String = "pnCritere" ' Nom de la plage contenant les critères
    Sub Main()
     Dim rngFrom As Range, rngCrit As Range
     With ThisWorkbook
      Set rngFrom = .Worksheets(shtFromName).Range(Addr).CurrentRegion
      Set rngCrit = .Worksheets(shtFromName).Range(rngCritName)
     End With
     FilterCopy rngFrom, rngCrit ' Exporte
    End Sub
    Sub FilterCopy(dBase As Range, rngCriteria As Range)
     Application.ScreenUpdating = False
     If Not (ActiveSheet.Cells.Find("*") Is Nothing) Then
      ' Si la feuille n'est pas vide, création d'une feuille pour copier les données
      Worksheets.Add before:=Sheets(1):  ActiveCell = Worksheets(1).Range("A1")
      Worksheets(1).Tab.Color = vbRed
      flagNotEmpty = True
     End If
     dBase.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCriteria, _
                            CopyToRange:=ActiveCell, Unique:=False
     Application.ScreenUpdating = False
    End Sub
    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 éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Par défaut
    bonjour! merci pour cette piste mais il y a plein de choses que je ne comprends pas bien..

    à quoi sert le critéère en A2 ?? car sur mon fichier j'ai inséré ton code et lorsque j'essaye de faire tourner Main, il me dit que j'ai une incompatibilité de type.. que dois-je mettre en A2 ??

    Edit : j'ai essayé de mettre >0 et là j'ai une erreur du à l'application ou à l'objet..

  4. #4
    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 170
    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 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La zone de critère est la plage nommée pnCritere pour l'exemple sur la même feuille A1:A2 en A1 l'étiquette Heure (la même qu'en F4) en A2 le critère >0.
    Première question, connais-tu le filtre élaboré dans Excel ?
    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

  5. #5
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 129
    Par défaut
    non je n'ai aucune notion.. désolé vraiment..

  6. #6
    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 170
    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 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Evidemment, c'est ce que je craignais.
    Si tu ne connais pas le filtre élaboré, tu ne peux pas comprendre le code.
    L'idéal avant de faire du VBA, c'est d'avoir une bonne connaissance des possibilités d'excel, sinon on recrée par VBA ce qui existe nativement dans le produit, ce qui est tout de même un comble.
    Je te renvoie donc vers les cours et tutoriels Excel : http://excel.developpez.com/cours/.

    Il est peut-être fort probable qu'après lecture tu pourras résoudre ton problème sans macro, si c'est un travail ponctuel.
    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

Discussions similaires

  1. [XL-2013] Importer des données dans un autre classeur
    Par titoupoulpe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2014, 14h11
  2. [XL-2010] Copier les données dans un autre classeur
    Par idhmida dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2013, 15h17
  3. [XL-2003] Exportation de données dans un autre fichier Excel
    Par chalart dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/11/2010, 00h01
  4. [XL-2003] Formule Somme.si allant chercher des données dans un autre classeur
    Par spoutnikk dans le forum Excel
    Réponses: 4
    Dernier message: 24/04/2010, 18h56
  5. Export d'onglet dans un autre classeur
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/04/2009, 13h06

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