Range et Cells avec Object (résolu)

  • Initiateur de la discussion Initiateur de la discussion Pepino
  • 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 !

Pepino

XLDnaute Nouveau
Bonjour à tous !

J'ai réussi à faire ma macro comme un grand tout seul cependant j'ai rencontré un bug qui, même si solutionné, je ne comprends pas la raison du plantage.

Je pars de cette déclaration liée à un fichier :

Code:
    Dim source As Object 
    Dim F As Worksheet
    
    For Each F In Sheets
         If UCase(F.Name) Like "FINAL*" Then 
         F.Activate
    Exit For
         End If
    Next F
Set source = F


Je me retrouve bien avec ma variable "source" déclarée en tant que object et bien définie vers une feuille de calcul.

Maintenant, je ne comprends pas pourquoi, lorsque je veux travailler avec des Range dans cette feuille, cela ne fonctionne pas mais avec Cells aucun problème. Voici les codes :

Code:
If source.Range("A:" & Numero_Ligne) <> "" Then  'NE FONCTIONNE PAS
    
With source
.Range ("A:" & Numero_Ligne) <> ""
End With                                        'NE FONCTIONNE PAS pourtant j'ai utilisé le même code dans une autre macro avec .copy à la place de <> "" et cela fonctionne !!!
    
While source.Range("A:" & Numero_Ligne) <> ""    'NE FONCTIONNE PAS
    
While source.Cells(Numero_Ligne, 1) <> ""        'FONCTIONNE


J'ai aussi essayé en remplaçant source par F qui est déclarée en tant que worksheet mais cela ne marche pas non plus.

Comme vous pouvez le constater il n'y a que avec Cells que ca ne bug pas. J'ai fais plusieurs recherches, Cells et Range sont sensés être identiques en terme d'utilisation.

Je ne comprends donc pas où est le problème et je suis sur sur que c'est quelque chose de très bête pourtant !

Merci à vous !
Alexandre.
 
Dernière édition:
Re : Range et Cells avec Object

Bonjour

F est une feuille. Il n'y a pas de raison de changer son type pour passer de feuille à object mais le problème dans ta macro ne venait pas de là mais de l'écriture de range :
on écrit A1 et pas A:1 🙂
teste ceci

Code:
Sub test()
    Dim source As Worksheet
    Dim F As Worksheet
   
   Dim Numero_Ligne As Integer
   Numero_Ligne = 2
   
    For Each F In Sheets
         If UCase(F.Name) Like "FINAL*" Then
         F.Activate 'il n'est pas nécessaire en général de sélectionner les feuilles. Les activer cela dépend de ce qu'on fait dessus. Si tu prends la peine de préciser dans ton code sur quelle feuille tu travailles ce n'est en général pas la peine.
    Exit For
         End If
    Next F
Set source = F

If source.Range("A" & Numero_Ligne) <> "" Then MsgBox ("OK")

With source
If .Range("A" & Numero_Ligne) <> "" Then MsgBox ("OK2")
End With

End Sub
 
Re : Range et Cells avec Object

Bonjour

comme ça c'est mieux enlevé les :

Code:
If source.Range("A" & Numero_Ligne) <> "" Then  ' FONCTIONNE 
    
With source
.Range ("A" & Numero_Ligne) <> ""
End With                                        ' FONCTIONNE 
    
While source.Range("A" & Numero_Ligne) <> ""


EDIT : Hello Misange
 
- 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

Discussions similaires

Réponses
2
Affichages
332
Réponses
2
Affichages
427
Retour