Problème de sélection

Fermé
Redliss - Modifié le 9 juil. 2018 à 16:47
Redliss Messages postés 7 Date d'inscription lundi 9 juillet 2018 Statut Membre Dernière intervention 10 juillet 2018 - 10 juil. 2018 à 09:00
Bonjour,

Je souhaite sélectionner une plage de données, pour cela j'utilise ce code :
Sub Bouton1_Cliquer()

Dim dernligne As Integer, derncolonne As Integer, ws As Worksheet
Dim maplage As Range
Set ws = Sheets("Source")
'dernière ligne colonne A
dernligne = ws.Range("A" & Rows.Count).End(xlUp).Row
' dernière colonne ligne 1
derncolonne = ws.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Set maplage = Range(Cells(1, 1), Cells(dernligne, derncolonne))
ws.maplage.Select 

End Sub


La feuille Source est la feuille dans laquelle sont stockés mes données, ces dernières proviennent d'une exportation sur excel d'un outil décisionnel. Le problème est que VBA affiche comme erreur
"Erreur de compilation

Membre de méthode ou de données introuvable"
Ma macro est relié à un bouton sur une feuille ou je stocke mes boutons

Pouvez-vous s'il vous plait m'expliquez mon erreur ?

Cordialement.

4 réponses

FlawTECH Messages postés 193 Date d'inscription mardi 16 février 2016 Statut Membre Dernière intervention 12 juillet 2018 100
Modifié le 9 juil. 2018 à 18:06
Bonjour,

Tu as fait une petite erreur de syntaxe à la dernière ligne.
En effet, tu fais appel au membre "maplage" depuis ta Worksheet (ws) alors qu'il s'agit d'un membre de la fonction.

La correction à apporter est simplement de retirer ws, comme suit :

maplage.Select


Cordialement,

FlawTECH

1
Redliss Messages postés 7 Date d'inscription lundi 9 juillet 2018 Statut Membre Dernière intervention 10 juillet 2018
9 juil. 2018 à 15:17
FlawTECH,

Merci pour ta réponse, l'erreur n'est plus.
Mais maintenant quand je clic sur mon bouton, je sélectionne toute la plage de la feuille où est mon bouton, alors que je souhaite utiliser la sélection "maplage" dans la feuille "Source".

Peux-tu me proposer une solution à mon problème s'il te plait ?

Cordialement
0
FlawTECH Messages postés 193 Date d'inscription mardi 16 février 2016 Statut Membre Dernière intervention 12 juillet 2018 100
Modifié le 9 juil. 2018 à 16:47
Re,

Il te suffirait d'"activer" la feuille avant de sélectionner le range.
Par contre, si ça te sélectionnait un range dans ta feuille active au lieu de te donner l'erreur 1004, c'est que ton code a changé, vérifie bien que tu sélectionnes la feuille "Source" avant.

Pour activer la feuille, il suffit d'ajouter ceci à la fin :
ws.Select
maplage.Select


Cordialement,

FlawTECH
0
Redliss Messages postés 7 Date d'inscription lundi 9 juillet 2018 Statut Membre Dernière intervention 10 juillet 2018
9 juil. 2018 à 16:11
Re,

Effectivement quand je met ce code cela m'affiche l'erreur 1004. Je ne comprends pas pourquoi le code ne fonctionne pas. J'ai bien vérifié que je sélectionne la feuille "Source" avant.

Cordialement,
0
FlawTECH Messages postés 193 Date d'inscription mardi 16 février 2016 Statut Membre Dernière intervention 12 juillet 2018 100
Modifié le 9 juil. 2018 à 16:47
Re,

J'ai testé à l'instant, peu importe la feuille sélectionnée, je suis redirigé vers "Source" et la selection est correcte.
Je te remets le code corrigé, tu as peut-être fait une erreur sans le vouloir.

Sub Bouton1_Cliquer()

Dim dernligne As Integer, derncolonne As Integer, ws As Worksheet
Dim maplage As Range
Set ws = Sheets("Source")
'dernière ligne colonne A
dernligne = ws.Range("A" & Rows.Count).End(xlUp).Row
' dernière colonne ligne 1
derncolonne = ws.Cells(1, Cells.Columns.Count).End(xlToLeft).Column
Set maplage = ws.Range(Cells(1, 1), Cells(dernligne, derncolonne))
ws.Select
maplage.Select

End Sub

Cordialement,

FlawTECH
0
Redliss Messages postés 7 Date d'inscription lundi 9 juillet 2018 Statut Membre Dernière intervention 10 juillet 2018
Modifié le 9 juil. 2018 à 16:38
Re,

J'ai repris ton code et cela ne marche toujours pas lorsque je clic sur le bouton. Cela marche uniquement quand je suis dans la feuille "Source" et que je lance le problème via Virtual Basic. Peut-être est ce du à une option qui a été coché par hasard sur Excel/VBA ? C'est vraiment bizarre parce que ton code parait cohérent et clair. Et, à vrai dire avant de faire la démarche d'aller sur un forum pour avoir de l'aide j'avais déjà essayer cette syntaxe.

Cordialement,
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 9 juil. 2018 à 17:23
Bonjour a tous,

Ce code peut etre dans toute feuille en dehors de "Source"

Sub Bouton1_Cliquer()
    Dim dernligne As Integer, derncolonne As Integer, ws As Worksheet
    Dim maplage As Range

    Set ws = Sheets("Source")
    With ws
        'dernière ligne colonne A
        dernligne = .Range("A" & Rows.Count).End(xlUp).Row
        'dernière colonne ligne 1
        derncolonne = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
        Set maplage = .Range(.Cells(1, 1), .Cells(dernligne, derncolonne))
        .Activate
        maplage.Select
    End With
End Sub


Pourquoi vous selectionnez cette plage ????
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 10 juil. 2018 à 07:31
Bonjour,

Pour selectionner quoi que ce soit dans une feuille, elle doit être active ......

d'ou le
.Activate
et bien sur pour set plage il fallait dans votre code
ws.range

ce que je fait a l'intérieur du with end With
1
Redliss Messages postés 7 Date d'inscription lundi 9 juillet 2018 Statut Membre Dernière intervention 10 juillet 2018
10 juil. 2018 à 09:00
Bonjour,

D'accord merci !
0
Redliss Messages postés 7 Date d'inscription lundi 9 juillet 2018 Statut Membre Dernière intervention 10 juillet 2018
9 juil. 2018 à 17:35
Bonjour,

Ce code fonctionne f894009. Peux-tu m'expliquer pourquoi cela marche alors qu'avec l'autre syntaxe, ne fonctionne pas ?

A vrai dire, en postant ma question, le but était de sélectionner la plage pour ensuite faire un TCD. Mais entre temps, j'ai trouvé une autre alternative. Cependant même si je n'avais plus besoin de ce code, je souhaitais quand même savoir la réponse pour apprendre de mes erreurs!

Un grand merci à vous deux pour votre sagesse et le temps passé à m'aider
0