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 :

Passage d'une page de cellules à une fonction VBA [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Passage d'une page de cellules à une fonction VBA
    J'ai tableau dans une feuille Excel de 2 lignes et 7 colonnes A1:G2

    Je souhaite passer ce tableau à un fonction VBA.

    J'ai écrit une petite fonction pour illustrer le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function Test(MaPlage As Range) As Variant
    For i = 1 To 100
        If MaPlage(1, i) = "" Then Exit For
    Next i
    Test = i-1
    End Function
    Test(E1:G2) renvoie 3. C'est normal

    Test(A1:C2) renvoie 7. Ce n'est pas normal. La fonction devrait renvoyer également 3. C'est comme si la plage A1:C2 était automatiquement étendue à A1:G2

    Test(C1:D2) renvoie 5. Ce n'est pas normal. La fonction devrait renvoyer 2. C'est comme si la plage C1:D2 avait été étendue automatiquement à C1:G2

    Comment interdire c'est extension automatique de plage ?

    Merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,
    Ta boucle for dépasse la plage initiale, essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For i = 1 To maplage.Columns.Count

  3. #3
    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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le passage de l'objet Range est correct, ce qui ne l'est pas c'est la gestion de ta boucle.
    Si le but de ta demande est de savoir si la plage (objet Range) est bien passée. Tu n'as pas choisi le meilleur test

    Il te suffisait simplement d'écrire MsgBox maplage.Address pour obtenir son adresse et MsgBox maplage.Count pour obtenir le nombre de cellules (remplies ou vides)
    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

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Merci Hallester08
    Ca marche. Merci

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    La fonction s'appuie sur une valeur numérique.
    Dès lors, pourquoi la déclarer en Variant?

    Cela dit, je m'interroge sur l'opportunité d'une telle fonction.

    Comme le mentionne Halaster, que je salue au passage, autant considérer le nombre de colonnes de la plage.

    De là à créer une fonction avec une boucle pour tester une valeur nulle et sortir de la boucle

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

Discussions similaires

  1. Passage d'une fonction en tant que paramètre
    Par bagnolm dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2006, 15h58
  2. Réponses: 7
    Dernier message: 25/08/2006, 11h38
  3. Réponses: 17
    Dernier message: 15/05/2006, 17h18
  4. Trace ascii du passage dans une fonction
    Par ryko dans le forum Delphi
    Réponses: 4
    Dernier message: 10/05/2006, 21h06
  5. [FLASH 8] Pb passage d'une fonction en paramètre
    Par segphault dans le forum Flash
    Réponses: 2
    Dernier message: 17/02/2006, 11h14

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