Déclaration de feuille dans une macro

  • Initiateur de la discussion Initiateur de la discussion gecanosaga
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

gecanosaga

Guest
Bonjour à tous,

Je suis en train de développer une macro dans laquel je fais passer un paramétre correspondant à la feuille où la macro doit s'exécuter.
C'est un paramètre optionnel, si celui-ci n'est pas rempli je mets activesheet :
Code:
Sub BoucleR(cible As String, Optional num_feuille As Long)

Dim feuille As Sheets

If num_feuille = 0 Then

    feuille = ActiveSheet
    
Else

    feuille = Sheets(num_feuille)
    
End If

mon problème est qu'il ne veut pas remplir feuille. Je pense bien que le soucis vient de la déclaration. d'ailleur en mettant "Variant" ça fonctionne, mais j'aimerais savoir quel type je dois mettre pour que cela fonctionne (je n'aime pas mettre variant !)

merci
 
Re : Déclaration de feuille dans une macro

Bonjour Gecanosaga 🙂,
Il te manque Set
Code:
Sub BoucleR(cible As String, Optional num_feuille As Long)
Dim feuille As Sheets
If num_feuille = 0 Then
    Set feuille = ActiveSheet
Else
   Set feuille = Sheets(num_feuille)
End If
Bonne suite 😎
Ajout : Salut Robert 🙂
 
Dernière édition:
Re : Déclaration de feuille dans une macro

Bonjour à tous


Outre l'utilisation de Set, il faut typer correctement la variable feuille :
Code:
Dim feuille As Object


ROGER2327
#5595


Mercredi 11 Pédale 139 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXX, 5,7152h - chèvre
2012-W10-1T13:43:00Z
 
Re : Déclaration de feuille dans une macro

Merci pour cette réponse rapide, effectivement j'avais oublié les Set.....
Par contre maintenant on dirait que sheets n'est pas le bon type car lorsque j'essaye de m'en servir (feuille.cells(i,j) ) il me met : membre de méthode ou de données introuvable.
Code:
If num_feuille = 0 Then
    Set feuille = ActiveSheet
Else
    Set feuille = Sheets(num_feuille)   
End If

For i = c_debut To c_fin
    For j = l_debut To l_fin
        If feuille.Cells(i, j) = cible Then
            l_emplacement = i
            c_emplacement = j
            Exit Sub
        End If
    Next
Next
 
Re : Déclaration de feuille dans une macro

Re... Voir #4


ROGER2327
#5596


Mercredi 11 Pédale 139 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXX, 5,7768h - chèvre
2012-W10-1T13:51:52Z
 
Re : Déclaration de feuille dans une macro

Salut

je passe plutôt par une déclaration de type Worksheet. Sachant bien entendu que toutes les autres variables sont initialisées (voire bien déclarées) :
Code:
...
Dim feuille As Worksheet
If num_feuille = 0 Then
    Set feuille = ActiveSheet
Else
    Set feuille = Sheets(num_feuille)
End If
cible = 5
For i = c_debut To c_fin
    For j =  c_fin To l_fin
        If feuille.Cells(i, j) = cible Then
 
Re : Déclaration de feuille dans une macro

Bonjour Si...


Salut

je passe plutôt par une déclaration de type Worksheet.
(...)
On peut...
En croisant les doigts pour ne pas tomber sur une feuille graphique...​


ROGER2327
#5599


Mercredi 11 Pédale 139 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXX, 6,4836h - chèvre
2012-W10-1T15:33:39Z
 
Re : Déclaration de feuille dans une macro

Merci beaucoup pour ces réponses. Etant donné que je ne souhaite pas prendre de risques, je vais suivre l'avis de Roger2327 et déclarer en Objet.

Merci encore, @+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
249
Didierpasdoué
D
Retour