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 :

Copier des données d'une feuille dans les onglets respectifs d'un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Débutant en VBA et VB
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant en VBA et VB
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Copier des données d'une feuille dans les onglets respectifs d'un autre classeur
    Bonjour,

    Là je sèche sur une macro qui me semble compliquée
    J'ai un classeur contenant des données dans deux colonnes (sauf sur la première et dernière ligne de chacune des colonnes ).
    Dans la première colonne il y a des N° d'agences et dans la seconde colonne un chiffre correspondant à des sinistres comme ceci :
    colonne A colonne B
    0102 12
    0102 105
    0305 8
    1512 23
    etc.. etc...


    Dans un second classeur, j'ai des onglets qui correspondent à certaines agences.

    Je souhaiterais (si c'est possible) faire une boucle pour que cela ajoute les données du premier classeur dans l'onglet respectif

    Et en plus à un endroit bien définit (par exemple en M2 et N2)

    J'ai commencé à écrire le code, mais là, mon cerveau bloque sur la logique à adopter et la méthode à mettre en place

    voici où j'en suis... (auriez vous des idées ? des remarques ? suis je mal embarqué ? )

    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
    Sub ajoutsinistreonglets()
     
    'ajout du nombre total de sinistres dans les onglets respectifs
     
     
    Dim wbk As Workbook
    Dim cel As Integer
    Dim wk As Workbook
    Dim Indic As Integer
    Dim monOnglet As Sheets
    Dim lign As Long
     
     
     
    Set wk = ThisWorkbook
     
    Classeur = Application.GetOpenFilename("Classeurs Excel, *.xls")
    Set wbk = Workbooks.Open(Classeur)
     
    wk.Activate
    cel = Range("A65000").End(xlUp).Row
    Indic = 2
     
     
     
    While Indic <= cel
    vall = Sheets("NBRAGC").Range("A" & Indic)
     
    For Each monOnglet In wbk.Sheets
    If vall = Sheets(wbk) Then
    wk.Activate
    vall(lign).Copy
    wbk.Activate
     
     
    End If
     
     
     
    End Sub

    Merci de votre aide ou de vos conseils

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible.

    Dans le code ci-dessous, le fichier de synthèse des agences comporte le nom des agences dans la première colonne et l'information à transmettre dans le fichier Données Agences dans la colonne B.

    Le programme ouvre le fichier Données Agences, balaye toutes les feuilles pour trouver un nom de feuille présent dans la colonne A du premier fichier. Si le nom est trouvé, la cellule M2 de la feuille est mise à jour.

    A la fin de la mise à jour, le fichier des Données Agences est fermé après sauvegarde.

    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
    Sub AjoutSinistreOnglets()
     
    ' Ajout du nombre total de sinistres dans les onglets respectifs
     
    Dim FeuilleAgence As Worksheet
     
    Dim LigneTitreSynthese As Long
    Dim DerniereLigneSynthese As Long
     
    Dim AireSynthese As Range
    Dim CelluleSynthese As Range
     
    Dim FichierAOuvrir As Variant
     
            LigneTitreSynthese = 1
            DerniereLigneSynthese = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
            Set AireSynthese = ActiveSheet.Range(Cells(LigneTitreSynthese + 1, 1), Cells(DerniereLigneSynthese - 1, 1))
     
            FichierAOuvrir = Application.GetOpenFilename("Fichiers (*.xl*),*.xl*")
     
            If FichierAOuvrir <> False Then
     
                    Workbooks.Open (FichierAOuvrir)
     
                    For Each CelluleSynthese In AireSynthese
     
                            For Each FeuilleAgence In Sheets
     
                                Select Case FeuilleAgence.Name
                                    Case CelluleSynthese
                                       FeuilleAgence.Range("M2") = CelluleSynthese.Offset(0, 1)
                                       Exit For
                                End Select
     
                            Next FeuilleAgence
     
                    Next CelluleSynthese
     
                    ActiveWorkbook.Close savechanges:=True
     
                    Set AireSynthese = Nothing
     
            End If
     
    End Sub

    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Débutant en VBA et VB
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant en VBA et VB
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    j'ai testé et ça fonctionne parfaitement, je pense surtout que je m'étais un embrouillé dès le début, et ta méthode est beaucoup plus simple et "logique"

    merci à toi Eric ! (on sent l'expérience )

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

Discussions similaires

  1. Copier des données d'une feuille dans plusieurs autres
    Par Sylcoco dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/03/2011, 11h40
  2. Réponses: 0
    Dernier message: 24/02/2011, 17h24
  3. Copier des données d'une feuille excel vers plusieurs autres
    Par LeeBamboo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2008, 15h46
  4. copier des cellules d'une feuille dans une autres sous condition
    Par olivertwist dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2007, 10h42
  5. [VBA-E]transposer des données d'une feuille dans une autre
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/03/2007, 18h47

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