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 :

Problème copier coller d'une formule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut Problème copier coller d'une formule
    Bonjour,
    Je suis nouveau sur le forum et j'ai besoin d'aide, je n'arrive plus à avancer.
    Je vous explique mon programme. Le but est : à partir d'un fichier source (OF.xlsx dans mon exemple) d'extraire les valeurs dans un nouveau classeur(classeur1.xlsm) et d'ensuite les classer dans les différentes partie (feuilles). Mais le problème est que la feuille OF du classeur1 peut etre modifié par l'utilisateur et il faudrait qu'automatiquement les autres feuilles changent aussi. Mon problème est que lorsque je veux etendre une formule (celle pour recopier d'une feuille a l'autre) il faut entrer une plage mais je n'arrive pas a lui rentrer une plage variable. Comment pourrais-je faire ? je vous joint mes fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With WB1.Worksheets(Feuil2.Name)
        .Range("L3") = "=IF(OF!L3="""","""",OF!L3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil2.Name).Range("L3:P3"), 
    c'es la ligne juste juste au dessus ou je galère.
    Type:=xlFillDefault
        .Range("L3:P3").AutoFill Destination:=WB1.Worksheets(Feuil2.Name).Range("L3:P" & x), Type:=xlFillDefault
     End With
    Voila la partie ou je bloque

    et voila le code entier

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    Dim Fichier As String
    Public WB1 As Workbook
    Dim WB2 As String
    Public x As Long
    Dim feuilwb1 As String
    Dim feuilwb2 As String
    Dim FABF As String
     
     
    Sub copie()
     
        Set WB1 = ThisWorkbook
     
        feuilwb1 = ActiveWorkbook.ActiveSheet.Name
     
        Fichier = Application.GetOpenFilename
        Workbooks.Open Filename:=Fichier
     
        WB2 = ActiveWorkbook.Name
        feuilwb2 = ActiveWorkbook.ActiveSheet.Name
     
        x = Workbooks(WB2).Worksheets(feuilwb2).Range("F" & Rows.Count).End(xlUp).Row
        Workbooks(WB2).Worksheets(feuilwb2).Range("A3:CQ" & x).Copy WB1.Worksheets(feuilwb1).Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
     
     
        WB1.Worksheets(Feuil1.Name).Range("A3:K" & x).Copy WB1.Worksheets(Feuil9.Name).Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
        With WB1.Worksheets(Feuil1.Name).Range("A1:K" & x)
        .Copy WB1.Worksheets(Feuil2.Name).Range("A" & Rows.Count).End(xlUp).Offset(0, 0)
        .Copy WB1.Worksheets(Feuil3.Name).Range("A" & Rows.Count).End(xlUp).Offset(0, 0)
        .Copy WB1.Worksheets(Feuil4.Name).Range("A" & Rows.Count).End(xlUp).Offset(0, 0)
        .Copy WB1.Worksheets(Feuil6.Name).Range("A" & Rows.Count).End(xlUp).Offset(0, 0)
        .Copy WB1.Worksheets(Feuil7.Name).Range("A" & Rows.Count).End(xlUp).Offset(0, 0)
        End With
     
     
        WB1.Worksheets(Feuil1.Name).Range("CO:CJ,CD:CG,AF:AI,L:M").Delete Shift:=xlToLeft
     
        Copie_auto
     
        Workbooks(WB2).Close
     
        Range("A2:CA2").AutoFilter
     
    End Sub
     
    Sub OF()
    With WB1.Worksheets(Feuil1.Name).Range("N3:O" & x)
    .Copy WB1.Worksheets(Feuil9.Name).Range("L" & Rows.Count).End(xlUp).Offset(1, 0)
    End With
    End Sub
     
     
     
    Private Sub CommandButton1_Click()
     
    copie
    OF
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    ActiveSheet.Cells.Clear
     
    End Sub
     
    Private Sub CommandButton3_Click()
     
    CommandButton2_Click
    Feuil2.clear_CMS
    Feuil3.clear_FAB
    Feuil4.clear_TEST
    Feuil6.clear_ST
    Feuil7.clear_CTRLFIN
    Feuil9.clear_OF
     
    End Sub
    Sub Copie_auto()
    Dim FABF As String
     
     
        With WB1.Worksheets(Feuil2.Name)
        .Range("L3") = "=IF(OF!L3="""","""",OF!L3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil2.Name).Range("L3:P3"), Type:=xlFillDefault
        .Range("L3:P3").AutoFill Destination:=WB1.Worksheets(Feuil2.Name).Range("L3:P" & x), Type:=xlFillDefault
        End With
     
        With WB1.Worksheets(Feuil3.Name)
        .Range("L3") = "=IF(OF!Q3="""","""",OF!Q3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil3.Name).Range("L3:X3"), Type:=xlFillDefault
        .Range("L3:X3").AutoFill Destination:=WB1.Worksheets(Feuil3.Name).Range("L3:X" & x), Type:=xlFillDefault
        .Range("Y3") = "=IF(OF!BE3="""","""",OF!BE3)"
        .Range("Y3").AutoFill Destination:=WB1.Worksheets(Feuil3.Name).Range("Y3:AE3"), Type:=xlFillDefault
        .Range("Y3:AE3").AutoFill Destination:=WB1.Worksheets(Feuil3.Name).Range("Y3:AE" & x), Type:=xlFillDefault
        End With
     
     
     
        With WB1.Worksheets(Feuil4.Name)
        .Range("L3") = "=IF(OF!AG3="""","""",OF!AG3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil4.Name).Range("L3:AI3"), Type:=xlFillDefault
        .Range("L3:AI3").AutoFill Destination:=WB1.Worksheets(Feuil4.Name).Range("L3:AI" & x), Type:=xlFillDefault
        End With
     
        With WB1.Worksheets(Feuil6.Name)
        .Range("L3") = "=IF(OF!AC3="""","""",OF!AC3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil6.Name).Range("L3:O3"), Type:=xlFillDefault
        .Range("L3:O3").AutoFill Destination:=WB1.Worksheets(Feuil6.Name).Range("L3:O" & x), Type:=xlFillDefault
        End With
     
        With WB1.Worksheets(Feuil7.Name)
        .Range("L3") = "=IF(OF!BI3="""","""",OF!BI3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil7.Name).Range("L3:O3"), Type:=xlFillDefault
        .Range("L3:O3").AutoFill Destination:=WB1.Worksheets(Feuil7.Name).Range("L3:O" & x), Type:=xlFillDefault
        End With
     
     
        With WB1.Worksheets(Feuil9.Name)
        .Range("CMS").Copy WB1.Worksheets(Feuil2.Name).Range("L1").End(xlUp).Offset(0, 0)
        .Range("FAB").Copy WB1.Worksheets(Feuil3.Name).Range("L1").End(xlUp).Offset(0, 0)
        .Range("TEST").Copy WB1.Worksheets(Feuil4.Name).Range("L1").End(xlUp).Offset(0, 0)
        .Range("ST").Copy WB1.Worksheets(Feuil6.Name).Range("L1").End(xlUp).Offset(0, 0)
        .Range("CTRLFIN").Copy WB1.Worksheets(Feuil7.Name).Range("L1").End(xlUp).Offset(0, 0)
        End With
        FABF = Right(WB1.Worksheets(Feuil9.Name).Range("FAB").Address(False, False), 3)
        CMSC = WB1.Worksheets(Feuil9.Name).Range("CMS").Columns.Count
        WB1.Worksheets(Feuil9.Name).Range("FABB").Copy WB1.Worksheets(Feuil3.Name).Range(FABF).End(xlUp).Offset(0, 1 - CMSC)
    End Sub
    PS:Je ne suis peut etre pas claire et je m'en excuse.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Peut-être de cette façon, je n'ai pas eu le temps de tester.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With WB1.Worksheets(Feuil2.Name)
        .Range("L3") = "=IF(OF!L3="""","""",OF!L3)"
        .Range("L3").AutoFill Destination:=WB1.Worksheets(Feuil2.Name).Range("L3:P3"), 
    c'es la ligne juste juste au dessus ou je galère.
    Type:=xlFillDefault
        .Range("L:P").AutoFill Destination:=WB1.Worksheets(Feuil2.Name).Range("L:P" & x), Type:=xlFillDefault
     End With

Discussions similaires

  1. [AC-2007] Problème copier/coller d'une ligne excel
    Par christophe31 dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/03/2010, 14h50
  2. [XL-2003] Problème bizzare de copier coller d'une feuille à une autre
    Par FCL31 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/09/2009, 14h16
  3. gerer le copier/coller dans une richEdit
    Par SBP dans le forum MFC
    Réponses: 4
    Dernier message: 10/02/2005, 21h00
  4. [VB.NET] copier coller d'une valeur
    Par mic56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2004, 11h43
  5. problème de guillemets dans une formule shell
    Par dim_italia dans le forum VBA Access
    Réponses: 7
    Dernier message: 18/08/2003, 12h46

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