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 :

Passer en paramètre une plage de cellules selectionnée par l'utilisateur !


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Passer en paramètre une plage de cellules selectionnée par l'utilisateur !
    Bonjour
    J'ai du mal a faire fonctionner une procedure avec un parametre de plage de cellule qui n'est pas connue auparavant, j'aimerai lui passer le parametre aprés la selection de la plage par l'utilisateur , comme le fait les fonctions de excel (somme par exemple )
    j'ai essayé avec range ou variant comme type du parametre mais , j'ai toujours : reference non valide !
    Merci d'avance

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Affiches le code de ta procedure et son appel
    Jérôme

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Parametre plage de cellules selectionnées par l'utilisateur !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub TRTableau(r As Range)
    Dim i As Integer, j As Integer
    ' ici j ai essayé Set r= range(r) et j ai enlevé ca marche pas 
    For i = 1 To r.Cells.Rows.Count
    For j = 1 To r.Columns.Count
    '.... traitement des cellules
    '......
    Next j
    Next i
    End Sub
    j'execute la procedure a partire de la fenetre des macro,
    je tape le nom j ouvre la parenthaise et je selectionne le tableau exp :
    TRTableau($C$6:$F$11)
    il me dit reference non valide !!

    je veux savoir comment passer la selection ($C$6:$F$11) comme paramatre range ?
    Merci

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Si le nom de la macro n’apparaît pas, c'est qu'on ne peut la lancer par ce moyen.

    Ci dessous un exemple

    Macro de traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Ma_macro(rg As Range)
    MsgBox rg.Address
    End Sub
    Qui sera appelée par une macro de lancement (ici on passe en paramètre la sélection de cellule)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub Lancement()
    Ma_macro Selection
    End Sub
    Jérôme

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Ou sans paramètre (en utilisant Application.InputBox)
    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
    Sub TRTableau()
    Dim r As Range
    Dim i As Integer, j As Integer
     
    'Au cas où l'utilisateur annule l'opération
    On Error Resume Next
    Set r = Application.InputBox(Prompt:="Veuillez choisir la plage à traiter", Title:="Sélection de la plage", Type:=8)
    On Error GoTo 0
    If Not r Is Nothing Then
        For i = 1 To r.Rows.Count
            For j = 1 To r.Columns.Count
                '.... traitement des cellules
                '......
            Next j
        Next i
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    essentiel dans ces cas de figure, faire le distinguo ente ByVal et Byref pour savoir où on met les pieds...

    http://silkyroad.developpez.com/VBA/LesVariables/#LIV-A

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour
    Merci pour vos réponses
    Je peux la faire fonctionner en appelant la procedure par une autre, mais ce que je veux c'est de pouvoir l'inserer dans une cellule comme les fonctions standard d'excel (en la declarant comme function biensur)
    c'est pour ça que j'essaye de la tester comme ça pour regler le propleme du parametre
    je peux pas utiliser .selection, car au moment de l’insertion de la fonction dans la cellule, selection = la cellule !
    si quelqu'un a une idée sur le code source d'une fonction standard d'excel ça pourra nous regler le probleme
    Merci

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben si tu veux faire une fonction pourquoi utilise tu Sub ? passe directement à la création de la fonction ..

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour
    Pour faciliter les choses,
    j'aimerai savoir comment réaliser une fonction qui calcule la somme d'une plage de cellule.
    cette fonction doit etre inserer dans une cellule et choisir la plage de cellule par selection ! voila exactement comme la fonction somme d'excel
    Merci

  10. #10
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    bonjour,

    Utilises worksheetfunction alors ?

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    j'aimerai savoir comment réaliser une fonction qui calcule la somme d'une plage de cellule.
    Tu n'as qu'à utiliser la fonctionne SOMME d'excel

    Pour réaliser ta propre fonction personnalisée (exemple banal)
    Dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function maFonction(Rng As Range) As Double
     
    maFonction = Application.Sum(Rng)
    End Function
    Tu appelle ta fonction dans une cellule (en H1 par exemple) par:
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. [XL-2010] Comment manipuler une plage de cellules cachées par un Autofiltre ?
    Par stargates01 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 08/03/2014, 20h03
  2. Envois d'une plage de cellules fixe par mail en vba
    Par dguff dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/09/2007, 12h49
  3. comment selectionner une plages de cellule?
    Par potters dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/05/2007, 12h28
  4. [VBA-E]selectionner une plage de cellules
    Par k-eisti dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/05/2007, 10h50
  5. Réponses: 2
    Dernier message: 17/12/2006, 18h17

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