Quel est l'origine de cette erreur

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

apt

XLDnaute Impliqué
Bonjour,

En éxecutant ce code :

Code:
For Each n In Sheets("Feuil1").Range([D2], [D65536].End(xlUp))
        MsgBox "n = " & n.Value
        If n.Value = "np" Then
            n = "ex"
        End If
    Next n

j'obtiens cette erreur :

Erreur définie par l'application ou par l'objet

en jaune sur la ligne :

Code:
For Each n In Sheets("Feuil1").Range([D2], [D65536].End(xlUp))

Quel est l'origine de cette erreur ?

Merci.
 
Dernière édition:
Re : Quel est l'origine de cette erreur

Bonjour,

si à l'exécution de la macro tu te trouves dans une autre feuille, il faut faire comme ceci:

Code:
With Sheets("Feuil1")
For Each n In [SIZE=4][COLOR=Red][B].[/B][/COLOR][/SIZE]Range([COLOR=Red][B][SIZE=4].[/SIZE][/B][/COLOR][D2], [COLOR=Red][B][SIZE=4].[/SIZE][/B][/COLOR][D65536].End(xlUp))
...
....
Next
End With
Remarque l'importance des "." (points).
 
Re : Quel est l'origine de cette erreur

Bonjour à tous,

Skoobi confirmera sans doute, mais je crois que [D2] est compris comme Range("D2"), c'est à dire la cellule D2 de la feuille active par défaut. Or tu ne travailles pas dans la feuille active, donc les "." précisent bien que tu travailles dans la feuille Feuil1
 
Re : Quel est l'origine de cette erreur

Bonsoir à tous,

Pour completer et reformuler ce qui a été dit et pour repondre à la derniere question de apt
Le code suivant raccourci ...
Sub test()
For Each n In Range([D2], [D65536].End(xlUp))
MsgBox "n = " & n.Value
If n.Value = "np" Then
n = "ex"
End If
Next n
End Sub
... est effectivement valable si tu ne cites pas la feuille de calcul.
Auquel cas la boucle se fera sur la feuille active, si tu es sur d'etre sur la bonne feuille au moment de l'execution c'est bon.
Si tu precises une feuille avec sheets("Feuil1") et pas la source de la range, ça plante car il faut effectuer l'operation sur 2 sources différentes.
 
Dernière édition:
Re : Quel est l'origine de cette erreur

Re,
Bonjour Catrice,

pour illustrer ce que dit Catrice:

Code:
[COLOR=Blue]Range([D2], [D65536].End(xlUp))[/COLOR]
revient au même que:
Code:
[B]Sheets("Feuil1")[/B].[COLOR=Blue]Range([/COLOR][B]Sheets("Feuil1")[/B].[COLOR=Blue][D2],[/COLOR][B]Sheets("Feuil1")[/B].[COLOR=Blue][D65536].End(xlUp))[/COLOR]
A condition que Feuil1 soit la feuille active.
Dans le cas contraire, pour éviter de répéter la feuille, on cré le lien vers la feuille concernée avec With ...... End With.
D'une manière générale, quand on ne précise pas la feuille, VBA sous entend que la cellule correspond à la feuille active.
Cela est également valable pour une feuille d'un classeur si plusieurs classeurs sont ouverts.
Voili voilou.
 
Re : Quel est l'origine de cette erreur

Bonsoir tototiti,

Bonjour à tous,

Skoobi confirmera sans doute, mais je crois que [D2] est compris comme Range("D2"), c'est à dire la cellule D2 de la feuille active par défaut. Or tu ne travailles pas dans la feuille active, donc les "." précisent bien que tu travailles dans la feuille Feuil1

Oui j'utilise la colonne D de la Feuil1 en appel depuis la Feuil2.
 
- 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
4
Affichages
737
Retour