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 :

[VBA-E]selectionner une plage de cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut [VBA-E]selectionner une plage de cellules
    Bonjour,


    pour selectionner une plage de cellules dans Excel on fait par exmeple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Range("B8:H16").Select

    je veux donner a la fonction le nombre de ligne comme parametres et je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Range(Cells(l3, 2), Cells(lignes+13, 7)).Select
    le souci c'est que sa ne marche j'ai essayer de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille("Cells(l3, 2)":"Cells(20, 7)").Select
    et sa ne marche pas non plu,

    merci de montrer comme resoudre ce petit problème

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ton lignes il est défini comment au départ ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    je vais être un peut plus précis,

    moi je doit faire apel a une fonction qui créer un tableau , mais le souci c'est que les lignes du tableau ne sont pas identiques

    a chque fois il faut que je précise a ma fonction le nombre de lignes : donc je lui donne comme argument le nombre de lignes : comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub CreerTableau(feuille As Worksheet, ligne As Integer)
        feuille.Select
    '    feuille.Range(Cells(l3, 2), Cells(ligne+13, 7)).Select
     
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Range("B8:H40").Select
    sa marche bien , mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Range(Cells(l3, 2), Cells(ligne+13, 7)).Select
    sa ne marche pas , le problème c'est que je lai déja utilisé dans une autre macro et sa a fonctionnée , je ne sais pas ou est le problème
    ou elle est l'erreur ?

    merci de m'aider pour que je puisse avancer dans mon projet

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Tu peut écrire ça comme ça sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuille.Range("B13:G" & ligne + 13).Select
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par k-eisti
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Range("B8:H40").Select
    sa marche bien , mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Range(Cells(l3, 2), Cells(ligne+13, 7)).Select
    sa ne marche pas , le problème c'est que je lai déja utilisé dans une autre macro et sa a fonctionnée , je ne sais pas ou est le problème
    ou elle est l'erreur ?
    Tu es sûr de feuille ? Moi je le suis moins.
    Remplace
    Sub CreerTableau(feuille As Worksheet, ligne As Integer)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub CreerTableau(feuille, ligne)
        With feuille.Range(Cells(13, 2), Cells(ligne+13, 7))
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
        End with
        '... etc
    et instancie feuille dans la macro appelante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub LaMacro()
    Dim feuille as worksheet, ligne as long
        Set feuille = Worksheets("feuil1")
        Ligne = 25
        CreerTableau feuille, ligne
        '....
    A+

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Ousk, je comprend pas trop tes changements ? tu pourrait expliquer un peu pourquoi tu as fait ces changements ?

    On dirait, par rapport à ce que je vois, qu'il ne faut pas quand on créé une procédure faire comme variable pour celle-ci un worksheet..En tout cas c'est comme ça que je comprend tes modifs..
    Surtout que toi comme tu le fais, en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sub (feuille,ligne)
    Ta feuille et ta ligne ce sont des Variant au départ non ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non. Si tu instancies feuille as Worksheet dans la macro appelante, tu passes l'instance à la sub appelée. Idem pour une variable
    L'utilité du format se trouve dans l'appel d'une fonction qui elle va te retourner un type de variable non déclarée dans la sub appelante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub LaMacro()
    Dim i as byte
    Dim j as byte
         i = 5
         j = 2
         Reponse = LaFonction(i,j)
         if Reponse then msgbox "C'est vrai !"
    End sub
     
    Function LaFonction(i,j)as boolean
        LaFonction = i*j = 10
    End function
    Mais comme je n'ai pas la science infuse, je sais que ça "marche" comme ça, maintenant si ça marche "par hasard" alors le hasard fait bien les choses car je n'ai jamais eu le moindre pb en appliquant "mes règles"
    A+

    Edit
    Hello Illight, tu as testé mon code précédent avec l'instance de la feuille ?
    A+

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 175
    Par défaut
    j'ai trouvé l'erreur


    il faut pas mettre des chiffres dans la soulution est de faire come suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub CreerTableau(feuille As Worksheet, ligne As Integer)
        Dim ligne1 As Integer
        ligne1 = 13
        feuille.Select
      feuille.Range(Cells(ligne1, 2), Cells(ligne1 + ligne, 7)).Select
    A++

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

Discussions similaires

  1. Trier une plage de cellules
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/12/2019, 13h04
  2. [VBA-E] Exporter une plage de cellule en image GIF
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2007, 17h12
  3. Réponses: 2
    Dernier message: 17/12/2006, 18h17
  4. [VBA-E] Copier une plage de cellules avec critère
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/06/2006, 16h34
  5. [VBA-E]Selectionner une plage et la fusionner
    Par arkazar dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/03/2006, 17h21

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