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 :

Tableau - macro insertion de ligne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut Tableau - macro insertion de ligne
    Bonjour à tous,

    Je vous présente le problème: Un tableau A est mis à jour quotidiennement.
    Ce tableau contient une colonne "nom" de 8 noms possibles (il peut y avoir plusieurs fois le même nom) ainsi que des colonnes "quantités, "types" etc.

    Je souhaite créer une macro dans chacun de 8 autres classeurs qui en fonction du nom de la colonne "nom" du tableau A m'insére une ligne, si le nom correspond, avec les valeurs des "quantités" et "types" correspondantes.

    Je ne sais pas si j'ai été assez clair mais si quelqu'un peut me filer un coup de main je suis preneur!

    * Merci *

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Les données sont-elles classées, ou est-ce que tu ajoutes la ligne en bas du tableau ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    Si on ajoute la ligne en bas du tableau c'est très bien!

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Mets cette macro dans le module de la feuille. Tu dois changer le nom des fichiers dans la variable Classeurs. Aussi, j'ai supposé que tous les classeurs sont dans le même dossier. Je mets en pièce jointe le classeur source et 1 classeur cible.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Wbk As Workbook, Ligne As Long, Classeurs
        Classeurs = Array("HankMoody Cible1.xls", "HankMoody Cible2.xls", _
            "HankMoody Cible3.xls", "HankMoody Cible4.xls", "HankMoody Cible5.xls", _
            "HankMoody Cible6.xls", "HankMoody Cible7.xls", "HankMoody Cible8.xls")
        If Target.Column > 3 Then Exit Sub
        If Application.CountA(Cells(Target.Row, 1).Resize(, 3)) = 3 Then
            For Each Item In Classeurs
                Set Wbk = Workbooks.Open(ThisWorkbook.Path & "\" & Item)
                With Wbk.Sheets("Feuil1")
                    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                    .Cells(Ligne, 1).Resize(, 3).Value = Cells(Target.Row, 1).Resize(, 3).Value
                    Wbk.Close True
                End With
            Next
        End If
    End Sub
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    Merci Daniel.C.
    Cependant j'ai effectué un test avec les fichiers source/cible que tu as joint et lorsque que je rajoute une ligne dans le fichier source et lance la macro, elle ne se rajoute pas dans le tableau cible.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je n'ai pas été assez précis. Tu ouvres le fichier source; quand tu a rempli les 3 cellules des colonnes A, B et C, la macro se déclenche automatiquement; elle ouvre, met à jour et ferme successivement les 8 fichiers cibles.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    J'ai joint le fichier source pour être plus clair.

    Je souhaite en fonction du nom dans la colonne "nom", que ça me créé dans le classeur correspondant une ligne avec les valeurs "quantité", "sous-jacent", "strike" et "échéance". (ie si le nom est SICAV ELISE ça me créé cette ligne dans le classeur ELISE et seulement dans celui là); et (je me corrige) que toutes les lignes soient créées à partir d'une certaine ligne dans le classeur cible.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    1. Donne-moi le nom des 8 classeurs (c'est quoi le nom, pour "MCA EUROP' AVENIR") ?
    2. les données ont l'air classées. Tu ajoutes les données en fin de tableau, ou tu les insères ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    1 nom des classeurs (en fait je dois le faire sur 10):
    test_elise 2012
    test arthur 2012
    test_france 2012
    test_GPP 2012
    test_PBL 2012
    test_VIE 2012
    test_LELOGIS 2012
    test_GTG 2012
    test_Gestoblig 2012
    test_eurostrategies 2012

    2 je souhaite les insérer avant une ligne qui s'appelle qui commence par "monep" dans les classeurs destinations.

    Merci en tout cas pour toute cette précieuse aide !

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Mets également en pièce jointe un classeur cible. A quel classeur correspond le nom "MCA EUROP' AVENIR" ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    Il correspond au classeur test_eurostrategies 2012.

    Pour le classeur source en pièce jointe je n'ai pas l'autorisation de le mettre en pièce jointe...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    J'ai essayé de faire un code, évidement ça ne marche pas !
    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
    Sub rapatriement()
    Dim i As Integer
    'j'ouvre le classeur postdsmca et copie les valeurs en fonctions des noms dans la colonne "nom"
    Application.Workbooks.Open ("path posfdsmca")
    For i = i To 100
    While Cells(i, 2) <> ""
    If Cells(i, 2).Value = "arthur croissance" Then
    Range("C" & i&, "H" & i &).Select
    Selection.Copy
    'je les copie dans le classeur correspondant
    Application.Workbooks.Open ("path test_arthur")
    With ThisWorkbook.Worksheets("valoHebdo")
    'ici je souhaite créer une ligne non pas ligne 63 mais après une ligne dont la première cellule se nomme MONEP
    .Rows(63).Insert shift:=xlDown
    .Range("AT63", "AY63").Paste
    ActiveWorkbook.Close
    End With
    ElseIf Cells(i, 2).Value = "sicav elise" Then
    'meme chose
    End If
    Next
    End Sub

  13. #13
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    De nouveau :

    A quel classeur correspond le nom "MCA EUROP' AVENIR" ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    Citation Envoyé par HankMoody Voir le message
    Il correspond au classeur test_eurostrategies 2012.

  15. #15
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Il me manque les correspondances :
    - MCA France nom du fichier
    - test arthur 2012 quel nom ?
    - test_france 2012 quel nom ?
    - test_PBL 2012 quel nom ?
    - test_VIE 20122 quel nom ?
    - test_LELOGIS 2012 quel nom ?
    - test_Gestoblig 2012 quel nom ?

    PS.
    Tu as dû me mettre ça quelque part, mais je ne le retrouve plus. Quelles colonnes du classeur source doivent être renseignées pour que la copie ait lieu. Et quelles sont les correspondance entre les colonnes source et cible.
    Avec mes excuses.

    J'ai retrouvé le second point.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    arthur croissance => test_arthur 2012
    MCA Europ' avenir => test_eurostrategies 2012
    PBL croissance => test_pbl 2012
    sicav elise => test_elise 2012
    gestion prive planete => test_gpp2012
    gtg croissance => test_gtg 2012
    MCA france => test_france 2012

  17. #17
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Ca paraît bizarre, les cellules AT et suivantes ?
    J'ai mis cette macro dans la feuille "POS_FDS_MCA" du classeur source. Lorsque les cellules B à H de la dernière ligne sont renseignées, la macro se déclenche et copie :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    'Je souhaite intégrer les données des colonnes C D E F G H du fichier source dans la feuille PointageValo
    '(la dernière) juste avant la ligne monep (ligne 82 ici) aux colonnes B AT AU AV AW AX du fichier cible.
    Dim Noms, Fichiers, Wbk As Workbook, Ligne As Long
    Fichiers = Array("test_elise 2012", "test arthur 2012", "test_france 2012", "test_GPP 2012", _
    "test_PBL 2012", "test_VIE 2012", "test_LELOGIS 2012", "test_GTG 2012", "test_Gestoblig 2012", _
    "test_eurostrategies 2012")
    Noms = Array("SICAV ELISE", "arthur croissance", "test_france 2012", "GESTION PRIVE PLANETE", _
    "PBL croissance", "test_VIE 2012", "test_LELOGIS 2012", "GTG CROISSANCE", "test_Gestoblig 2012", _
    "MCA EUROP' AVENIR")
    If Target.Column > 2 And Target.Column < 9 And Target.Offset(1).Value = "" Then
        If Application.CountA(Cells(Target.Row, 2).Resize(, 7)) = 7 Then
            If IsNumeric(Application.Match(Cells(Target.Row, 2).Value, Noms, 0)) Then
                Application.ScreenUpdating = False
                Application.DisplayAlerts = False
                Set Wbk = Workbooks.Open(ThisWorkbook.Path & "\" & _
                Application.Index(Fichiers, Application.Match(Cells(Target.Row, 2).Value, Noms, 0), 1))
                Application.DisplayAlerts = True
                With Wbk.Sheets("pointageValo")
                    Ligne = .[A:A].Find("monep", , xlValues, xlWhole).Row
                    .Rows(Ligne).Insert
                    .Range(.Cells(Ligne, 1), .Cells(Ligne, "X")).Borders(xlEdgeTop).LineStyle = xlNone
                    .Range(.Cells(Ligne, 1), .Cells(Ligne, "X")).Borders(xlEdgeBottom).LineStyle = xlContinuous
                    .Range(.Cells(Ligne, 1), .Cells(Ligne, "X")).Borders(xlEdgeBottom).Weight = xlMedium
                    .Cells(Ligne, 2) = Cells(Target.Row, 3)
                    .Cells(Ligne, "AT").Resize(, 5).Value = Cells(Target.Row, 4).Resize(, 5).Value
                End With
                Wbk.Close True
                Application.ScreenUpdating = True
            End If
        End If
    End If
    End Sub
    Fichiers attachés Fichiers attachés

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 53
    Par défaut
    C'est bien cellule AT et la suite.
    Cependant, si les noms de la colonnes "nom" du fichier source posfdsmca sont amenés à être modifiés, il faut que le changement ait lieu dans les fichiers cibles. Le fichiers posfdsmca est mis à jour quotidiennement.

    N'est il pas donc plus simple d'effectuer les macros dans les fichiers cibles et de récupèrer les données dans le fichier source?

  19. #19
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu es en train de me dire : tu as bien bossé... maintenant, si on faisait autrement ? Je regarde.

  20. #20
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Si l'on copie de la cible vers la source, le nom à renseigner en colonne B est-il en B2 de la feuille "pointageValo" ? Où se trouve le compte à renseigner en colonne A ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Macro insertion de lignes
    Par lucieaup dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/08/2013, 15h56
  2. [PPT-2003] tableau lié - insertion de lignes
    Par vchico1 dans le forum Powerpoint
    Réponses: 0
    Dernier message: 22/09/2010, 17h26
  3. [WD-2003] Macro copie/colle tableau - Macro ajout de ligne
    Par Graineur dans le forum VBA Word
    Réponses: 17
    Dernier message: 02/08/2010, 09h32
  4. [OpenOffice] Macro insertion de ligne et copier coller calc
    Par Adamantium dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 10/07/2008, 15h20
  5. Macro: Insertion de ligne par condition
    Par Monteninho dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/08/2007, 14h48

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