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 :

Du bon emploi de "RANGE" [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 121
    Par défaut Du bon emploi de "RANGE"
    Bonsoir,

    Petite question toute simple pour compréhension:

    Dans mon code VBA j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(CeClasseur).Worksheets(Onglet_data).Activate: Range(Cells(20, "B"), Cells(20, NbrCol)).Copy
    Ce code fonctionne bien mais à l'origine je voulais écrire sous cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(CeClasseur).Worksheets(Onglet_data).Range(Cells(20, "B"), Cells(20, NbrCol)).Copy
    qui renvoie une erreur:

    "erreur 1004 erreur définie par l'application ou par l'objet"

    Je voudrais juste comprendre pourquoi cela ne fonctionne pas ?

    Merci !!

    @+

    Nono

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir Nono, bonsoir le forum,

    Quand tu utilises un plage ailleurs que dans l'onglet actif il faut spécifier l'onglet à chaque fois que tu y fais référence!... En revanche, si tu restes sur le classeur actif tu n'as pas besoin de le specifier, le code le prendra par défaut...

    Il te faut donc écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Ton_onglet").Range(Worksheets("Ton_onglet").Cells(20, 2), Worksheets("Ton_onglet").Cells(20, NbrCol)).Copy
    ou utiliser With... End With :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Worksheets("Ton_onglet")
         .Range(.Cells(20, 2), .Cells(20, NbrCol)).Copy
    End With

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu peux décliner l'arborescence de ta plage et l'affecter a un range!

    Comme ça vite fait je ne suis pas sur de la syntaxe de l'arborescence mais c'est l'idée!
    [le classeur est peux être entre crochet]
    range("classeur!feuille!A1:C12")D'accord Robert pour le With!!
    Dernière modification par Invité ; 07/09/2016 à 10h12.

  4. #4
    Expert éminent 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
    Par défaut
    Citation Envoyé par nono63 Voir le message
    Dans mon code VBA j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(CeClasseur).Worksheets(Onglet_data).Activate: Range(Cells(20, "B"), Cells(20, NbrCol)).Copy
    Petit conseil au passage : évite d'utiliser les ":" quand ce n'est pas nécessaire. Ca peut faire un code brouillon, plus difficile à relire.

    Citation Envoyé par Thautheme Voir le message
    ou utiliser With... End With
    Pour des informations plus détaillées : https://msdn.microsoft.com/fr-fr/lib.../gg264723.aspx

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 121
    Par défaut Super !
    Salut,

    Merci bcp pour vos réponses, c'est bien plus clair à présent ;-)

    @+

    Nono ...

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

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