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 :

Sélection et copie d'une plage variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Par défaut Sélection et copie d'une plage variable
    Bonjour !

    Allez hop, troisième post en trois jours. Quand j'aurais fini mon développement je serais content ! ^^'

    Cette fois-ci, j'ai besoin d'aller récupérer des données dans un autre document Excel. Le nombre de colonnes et de lignes n'est pas défini, je peux avoir quelques dizaines de données comme quelques milliers. Par contre je sais que les données commencent forcément en A1.
    Du coup, pour tout sélectionner, j'utilise ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Col As Long
    Dim Lin As Long
     
    Col = ActiveSheet.UsedRange.Columns.Count
    Lin = ActiveSheet.UsedRange.Rows.Count
    Maintenant, je cherche à sélectionner ma plage complète ; de A1 jusqu'en (Lin, Col). Comment puis-je faire ?

    Voici ma macro en entier, ça peut aider.

    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
    Sub ouvrir_et_copier_donnees()
     
        Dim File2 As String
        Dim Wbk2  As Workbook
     
        Dim Col As Integer
        Dim Lin As Integer
     
        Sheets("Sélection des données").Select
     
        ' Le chemin du fichier à ouvrir est en D6
        File2 = Cells(6, 4)
        ' Ouverture du fichier
        Set Wbk2 = Workbooks.Open(File2)
     
        Set Main = ThisWorkbook
     
        Col = Wbk2.Worksheets(1).UsedRange.Columns.Count
        Lin = Wbk2.Worksheets(1).UsedRange.Rows.Count
     
        ' Copier-coller dans Structure
        Wbk2.Worksheets(1).Range("A1:R32").Copy Main.Worksheets("Structure").Range("B15")
     
        ' Fermeture du fichier
        Wbk2.Close
     
    End Sub
    Ca fonctionne très bien mais UNIQUEMENT pour cet exemple, avec la cellule R32 écrite directement en dur dans le code. C'est ce R32 que je cherche à remplacer par quelque chose qui utilise mes variables Lin et Col...

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour.
    Citation Envoyé par Rémy A. Voir le message
    Maintenant, je cherche à sélectionner ma plage complète ?
    En respectant la règle fondamentale du TBTO, pour sélectionner la plage des données,
    pas besoin de chercher midi à quatorze heures !

    ActiveSheet.UsedRange.Select

    Sinon coder avec des sélections est fortement déconseillé …


    Donc pour la copier, pas besoin de la sélectionner :

    ActiveSheet.UsedRange.Copy Destination:=


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ça devrait être bon avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' Copier-coller dans Structure
        With Wbk2.Worksheets(1)
            .Range(.[A1], .Cells(lin, col)).Copy Main.Worksheets("Structure").Range("B15")
        End With

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Par défaut
    Merci Marc, ça marche bien.
    Vcottineau, je n'ai pas essayé ta méthode, celle de Marc étant plus propre, au final...
    Merci à vous deux !

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

Discussions similaires

  1. faire une copie d'une plage de cellules sur x feuilles
    Par La Zélie dans le forum Excel
    Réponses: 4
    Dernier message: 11/06/2008, 08h55
  2. Appliquer une formule à une plage variable
    Par sophiefag dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2008, 23h27
  3. Somme sur une plage variable
    Par mhamedbj dans le forum Excel
    Réponses: 2
    Dernier message: 29/02/2008, 15h56
  4. Copie d'une plage de cellules
    Par Jeanvaljean44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/01/2008, 17h46
  5. Problème de copie d'une plage de cellule
    Par Boonichou dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/08/2007, 17h31

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