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 :

Copie d'une plage *.csv vers la dernière d'un *.xlsm


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut Copie d'une plage *.csv vers la dernière d'un *.xlsm
    Bonjour à tous,

    Je sèche durement là.
    Je souhaite faire une copie d'une plage A2:R1000 du fichier test.csv vers data.xlsm
    Puis refaire de même avec les deux mêmes fichiers mais ayant une plage différente (la fin du tableau) de V2:AM1000

    Les cellules S ; T ; U du data.xlsm ont des formules de dates du coup pas d'écrasement.

    Je lance le code à partir du fichier data.xlsm

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub import()
    '
    Workbooks.Open Filename:= _
    "\\10.4.95.13\MALEK\exp_oxyg\STAT_GALERIE.csv"
    Range("A2:R15000").Select
    Selection.Copy
    Application.Run "'Rapport Global d''activité.xlsm'!data2"
    Range("A" & Rows.Count).End (xlUp)(2)
    Workbooks("STAT_GALERIE").Worksheets(STAT_GALERIE).Range("V2:AM15000").Copy
    Application.Run "'Rapport Global d''activité.xlsm'!data2"
    Range("V" & Rows.Count).End (xlUp)(2)
     
    End Sub
    Rien ne se copie... puis j'ai une erreur ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Rows.Count).End (xlUp)(2)
    Please HELP...

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Déjà :
    cette instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Rows.Count).End (xlUp)(2)
    n'a absolument aucun sens, pas plus de sens que si tu écrivais deux lignes de code disant par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim cellule as range
    cellule
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Que fallait-il écrire alors?

    cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A").End (xlUp)(2)

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Que fallait-il écrire alors?
    Je refuse CATEGORIQUEMENT de répondre personnellement à une telle question !
    A moins que tu ne m'expliques, toi, ce que je devrais dire au lieu par exemple de crier par la fenêtre :
    "maison"
    et rien d'autre (ce qui n'aurait AUCUN SENS)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  6. #6
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Bonjour KIKI29,

    Merci pour votre réponse.

    Mais je me rends compte que copier un CSV sur un XLSX ne copie pas les données comme je le voudrais.

    Mais je vais chercher la bonne procédure.. Merci votre lien que je vais consulter de suite.

  7. #7
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Allez, une petite piste :

    - tu démarres l'enregistreur de macro
    - dans ton menu "données", choisis "Données externes/A partir du texte"
    - tu choisis ton fichier à importer
    - tu lui appliques ce que tu veux (type de séparateur, type de données, etc...)
    - tu finis l'importation das une feuille vierge
    - tu arrêtes l'enregistreur de macro
    - tu vas voir le code que ça a généré...
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Excellente piste !!!!

    Merci beaucoup,

    Voici le code généré... c'est très bon début.



    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
    Sub test3()
    '
    ' test3 Macro
    '
     
    '
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;Z:\MALEK\exp_oxyg\STAT_GALERIE.CSV", Destination:=Range("A2:R1000"))
            .Name = "STAT_GALERIE"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 2
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
     
    End Sub

  9. #9
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Merci pour votre précieuse aide !!

    Je suis presque au bout de mon idée. Mais si je reviens au sujet du post, je n'y arrive pas à mettre ma copie à la première ligne vide de la colonne A.

    J'ai fait plusieurs tests pourtant, mais je n'y arrive pas Grrrrrrrr

    Pour le CSV je suis passé par un fichier Temp.xlsx, et c'est depuis ce fichier que je lance ma copie dans mon fichier principal. A la fermeture du temp pas de sauvegarde.
    Tout fonctionne à merveille, sauf la copie à la première ligne vide de la colonne A (puis aussi sur la colonne V mais si je trouve pour la A je ferai de même pour la V)

    C'est entre la ligne 41 et 42 que j'ai ce problème.

    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
    Sub import_oxy()
    '
    ' import_oxy Macro
    '
     
    '
        Workbooks.Open Filename:="Z:\MALEK\exp_oxyg\temp.xlsx"
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;Z:\MALEK\exp_oxyg\STAT_GALERIE.CSV", Destination:=Range("$A$1"))
            .Name = "STAT_GALERIE"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 2
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
     
        Application.DisplayAlerts = False
        Range("A1:R13700").Select
        Selection.Copy
        Windows("Rapport Global d'activité v2.xlsm").Activate
        Application.Run "'Rapport Global d''activité v2.xlsm'!data2"
        Range("A36374").Select
        ActiveSheet.Paste
        Range("V36374").Select
        Windows("temp.xlsx").Activate
        Range("V1:AM1370").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Rapport Global d'activité v2.xlsm").Activate
        ActiveSheet.Paste
        Range("V36374").Select
        Application.Run "'Rapport Global d''activité v2.xlsm'!retour_data"
        Windows("temp.xlsx").Activate
        Range("A1").Select
        Workbooks("temp.xlsx").Close SaveChanges:=False
        Application.DisplayAlerts = True
     
    End Sub

  10. #10
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour ouvrir un CSV, je conseille fortement d'utiliser OpenText plutôt que Open.
    Les paramètres de cette méthode permettent de bien mieux contrôler le format des données importées.
    https://msdn.microsoft.com/fr-fr/vba...t-method-excel

    Et c'est beaucoup plus simple à utiliser que des tables de requêtes.

    Autre conseil : tu devrais supprimer tous les Select/Selection et autres Activate de la seconde partie de ton code.
    Ca serait plus lisible, plus rapide et plus agréable à l'exécution.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Merci pour votre réponse,

    Je dois avouer ne pas être un champion du VBA.

    Le première partie est le résultat d'une macro. Pour la seconde si je supprime les select et activate cela risque de plus marcher avec ma méthode plutôt simple.


    J'ai éssayé de le faire en mode "pas très intelligent lOoOl" en gros en elevant tout les select et activate... A la première ligne de la seconde partie j'ai une erreur de compilation...

    Je suis passé de ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:R13700").Select
    A ça :


  12. #12
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par rouchi Voir le message
    si je supprime les select et activate cela risque de plus marcher
    C'est un pointe de vue que j'ai du mal à partager.

    avec ma méthode plutôt simple.
    J'ai éssayé de le faire en mode "pas très intelligent lOoOl" en gros en elevant tout les select et activate...
    En mode plus réfléchit (ne parlons pas d'intelligence, c'est une notion que j'aurai du mal à définir), ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Range("A1:R13700").Copy
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("à modifier").Range("A36374").PasteSpecial(xlPasteAll)
        Range("V1:AM1370").Copy
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("à modifier").Range("A36374").PasteSpecial(xlPasteAll)
        Workbooks("temp.xlsx").Close SaveChanges:=False
    Il faudrait modifier les noms dans les Worksheets marqués "à modifier" (tu ne les indique pas dans ton code).
    Je n'ai pas non plus compris ce que venaient faire là les Applications.Run.
    Et je ne comprends pas pourquoi tu fais deux Paste sur la même cellule (le second rend le premier inutile), ce qui est sans doute une erreur.

    A noter aussi que si tu utilisais OpenText sur ton CSV, tu n'aurais pas besoin de passer par un fichier temp intermédiaire.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Effectivement !!

    C'est beaucoup plus propre.

    Cela dit je ne colle pas deux fois la même cellule, il y a la colonne A et la Colonne V

    Voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Application.DisplayAlerts = False
        Range("A1:R13700").Copy
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Range("A36374").PasteSpecial (xlPasteAll)
        Range("V1:AM1370").Copy
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Range("V36374").PasteSpecial (xlPasteAll)
        Workbooks("temp.xlsx").Close SaveChanges:=False
        Application.DisplayAlerts = True

    Il fonctionne parfaitement, merci.

    Mais, comment remplacer ça :

    Par la première cellule vide de la colonne A ?

    Car cette onglet est déjà bien rempli...

  14. #14
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Voilà ! Trop happy là.

    Cela fonctionne, merci pour votre aide vous êtes géniaux !



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Application.DisplayAlerts = False
        Range("A1:R13700").Copy
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Cells(Rows.Count, "A").End(xlUp)(2).PasteSpecial (xlPasteAll)
        Range("V1:AM1370").Copy
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Cells(Rows.Count, "V").End(xlUp)(2).PasteSpecial (xlPasteAll)
        Workbooks("temp.xlsx").Close SaveChanges:=False
        Application.DisplayAlerts = True
        Application.Run "'Rapport Global d''activité v2.xlsm'!retour_data"

  15. #15
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Décidément, VBA est trop compliqué

    Maintenant que la copie fonctionne, je voulais étirer une formule de la colonne S pour qu'elle s'arrête à la dernière cellule de la colonne A non vide.

    Voilà mon résultat qui, sans que je me sens étonné, ne fonctionne pas....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim DernLigne As Long
     
        DernLigne = Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Cells(Rows.Count, "A").End(xlUp).Row
        Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Range("S").AutoFill Destination:=Worksheets("cumul").Range("S" & DernLigne)

  16. #16
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    ... ce qui parait logique, vu que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Rapport Global d'activité v2.xlsm").Worksheets("cumul").Range("S").AutoFill Destination:=Worksheets("cumul").Range("S" & DernLigne)
    est incorrect !

    Juste avant ta méthode AutoFill, Range("S") ne veut rien dire...

    De même que Worksheets("cumul").Range("S" & DernLigne)...
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  17. #17
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Mdrrrr

    En gros j'ai écrit n’importe quoi....

  18. #18
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Citation Envoyé par rouchi Voir le message
    Mdrrrr

    En gros j'ai écrit n’importe quoi....
    Je n'irais pas jusque là...

    Mais en mettant "AutoFill" en surbrillance dans ton code, puis touche F1, tu verrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Visual Basic pour Applications 
    Set sourceRange = Worksheets("Sheet1").Range("A1:A2")
    Set fillRange = Worksheets("Sheet1").Range("A1:A20")
    sourceRange.AutoFill Destination:=fillRange
    Ce qu'on peut raccourcir en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Sheet1").Range("A1:A2").AutoFill Destination:=Worksheets("Sheet1").Range("A1:A20")
    Or là, tu es loin de fournir des "Range" aux 2 endroits de ton code...
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  19. #19
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par rouchi Voir le message
    Mais, comment remplacer ça :
    Par la première cellule vide de la colonne A ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    Mai 2017
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2017
    Messages : 75
    Points : 23
    Points
    23
    Par défaut
    Si je veux tirer une formule qui se trouve dans la colonne S et que je souhaite qu'elle s'arrête a une ligne précise, prendre comme repère la dernière ligne non vide d'une autre colonne (peu importe tant que c'est entre la A et la R).

    C'est possible non ?

    D'où dans mon code la présence de la colonne S et de la A.

Discussions similaires

  1. [XL-2013] Copie d'une plage d'un *.csv fermé vers une BDD*.xlsx ouverte
    Par rouchi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/06/2017, 17h48
  2. copie d'une plage de donnée d'un classeur vers un autre
    Par bitissa1991 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/08/2016, 16h00
  3. [XL-2002] Copie d'une plage de colonne vers une plage d'une autre colonne
    Par Canidé dans le forum Excel
    Réponses: 1
    Dernier message: 16/01/2014, 05h48
  4. Réponses: 4
    Dernier message: 20/04/2012, 20h49
  5. [VBA] Copie d'une plage vers un autre classeur
    Par Pachee dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/08/2008, 15h14

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