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 :

une fonction de me genere en output une plage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut une fonction de me genere en output une plage
    j'aimerais savoir s'il est possible de créer une fonction pour récupérer une plage afin de réutiliser plus tard dans un sub
    dans cet exemple la fonction range_1 qui récupère la plage et j'essaie de l'utiliser dans sub aa mais celà ne marche pas
    j'ai l'impression que c'est le set qui déconne
    merci pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function range_1()
    Set plage = Range("a1", "c3")
    'plage.Select
    range_1 = plage
    End Function
    Sub aa()
    Set plage = range_1
    plage.Select
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Esaie comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function range_1() As Range
        Set range_1 = Range("a1", "c3")
    End Function
     
    Sub aa()
        Dim plage As Range
     
        Set plage = range_1
        plage.Select
    End Sub

  3. #3
    Membre averti Avatar de Kentarosan
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 37
    Par défaut
    Bien le bonjour !

    A mon avis il manque simplement un Set dans la fonction au moment d'attribuer plage dans range_1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function range_1()
        Set plage = Range("a1", "c3")
        'plage.Select
        Set range_1 = plage
    End Function
    Sub aa()
        Set plage = range_1
        plage.Select
    End Sub
    En espérant avoir aidé!

    PS: Ma solution est la même que Parmi, et je trouve que sa solution est plus propre. Moi je n'ai fait que corriger ton code

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    range_1 = plage
    tu retourne les valeur trouvées dans tes cellules!

    alors que parmi et Kentarosan font référence à la plage de cellules et tu peur donc faire un select!

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci à parmi et aux autres .votre code marche tres bien sauf que quand je l'adapte à mon code plus compliqué et ben ca ne marche pas
    voici mon code en suivant la logique de parmi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function f_get_range_Ssel() As Range
    lett_sel = Split(Columns(Selection.Column).Address(ColumnAbsolute:=False), ":")(1)
    col = lett_sel
    dern = Range(col & "65536").End(xlUp).Row
    Set f_get_lett_Ssel = Range(col & "2", col & dern)
    'Range(col & "2", col & dern).Select
    End Function
    Sub aa()
        Dim plage As Range
        Set plage = f_get_range_Ssel
        plage.Select
    End Sub

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(cells(2,col), cells(dern,col))

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    désolé dysorthographie.cela ne marche pas

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Comme le dit dysorthographie,

    Oublie les lettres qui ne sont pas nécessaires lorsqu'on nomme un Range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    col=Activecell.column  'si c'est bien ce que tu cherches à faire
    dern = Cells(rows.count, col).End(xlUp).Row
    Set f_get_lett_Ssel =Range(cells(2,col), cells(dern,col))

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci parmi.je sais le faire ton dernier code .mais quand meme c'est un bug incompréhensible quoi.je n'aime pas trop lacher le morceau mais bon là on est tous coincé

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Dans le code que tu as mis, il y a une erreur de "retour"
    Set f_get_lett_Ssel = Range(col & "2", col & dern)
    Ce n'est pas le nom de la Function...


    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
    Function f_get_range_Ssel() As Range
        Dim lett_sel As String, col As String
        Dim dern As Long
     
        lett_sel = Split(Columns(Selection.Column).Address(ColumnAbsolute:=False), ":")(1)
        col = lett_sel
        dern = Range(col & "65536").End(xlUp).Row
        Set f_get_range_Ssel = Range(col & "2", col & dern)
    End Function
     
    Sub aa()
        Dim plage As Range
        Set plage = f_get_range_Ssel
        plage.Select
    End Sub
    Et habitue-toi à déclarer tes variables... et à utiliser Option Explicit...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/08/2006, 10h41
  2. Réponses: 9
    Dernier message: 13/03/2006, 17h45
  3. Réponses: 5
    Dernier message: 06/01/2006, 11h41
  4. Réponses: 3
    Dernier message: 06/11/2005, 18h02
  5. Apelle d une fonction js avec la valeur d'une listbox
    Par echecetmat dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/02/2005, 16h53

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