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 :

Fonction Range pour un nb de lignes variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut Fonction Range pour un nb de lignes variable
    Bonjour,

    Pouvez vous me dire svp ce qui n'est pas bon dans cette synthaxe? ca plante a cet endroit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("TOTO").Range("B7:R" & (Sheets("Scratch Pad").Cells(15, 4).Value - 1)).Select

    Pour verifier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ("" & (Sheets("Scratch Pad").Cells(15, 4).Value - 1))
    me rend le nombre souhaité.

    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans le deuxième code tu affiches la valeur de la cellule d'une feuille en lui retranchant 1
    Dans le premier franchement, je ne sais pas ce que tu veux faire mais vraisemblablement tu es sur une autre feuille que la feuille "Toto" quand tu fais le Select, ce qui provoque une erreur.
    Si la feuille nommée "Feuil1" est active quand tu lances le code ci-dessous, tu auras aussi un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil2").Range("A1").Select
    Y a t'il une raison particulière de faire un Select ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 171
    Par défaut
    Vous aviez raison Philippe. c'est bien ce que vous disiez, "etre sur une autre feuille que la feuille "Toto" quand tu fais le Select, ce qui provoque une erreur."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Sheets("TOTO").Select
        Sheets("TOTO").Range("B7:R" & (Sheets("Scratch Pad").Cells(15, 4).Value - 1)).Select
        Selection.Copy
        Sheets("TOTO2").Select
        Sheets("TOTO2").Range("A8").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    On le répète sans arrêt sur ce forum, il est parfaitement inutile d'utiliser les instructions Select, Selection, Activate etc....
    De plus cela ralenti l'exécution des procédures.
    Sans m'étendre sur le côté curieux de cet adressage, la procédure ci-dessous fait exactement la même chose, se réduit à deux lignes et n'utilise pas le Select et Selection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("TOTO").Range("B7:R" & (Sheets("Scratch Pad").Cells(15, 4).Value - 1)).Copy
    Sheets("TOTO2").Range("A8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Attention, corrigé sans avoir fait le test.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2007] manipuler les fonctions caracteres pour récupérer une partie de variable
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/05/2015, 03h49
  2. [XL-2007] Problème Méthode Range() pour supprimer ligne
    Par bob633 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/03/2011, 15h56
  3. Réponses: 8
    Dernier message: 15/10/2009, 09h46
  4. Réponses: 15
    Dernier message: 16/09/2009, 16h19
  5. Réponses: 5
    Dernier message: 06/05/2008, 12h33

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