Dans un usf démarré en feuil1 mais dont les données sont en feuil2.
Et alors que toutes les instructions (For ..., if... then .. else ..).se
déroulent normalement avec les données de la feuil2, l'instruction
suivante se fait avec les données de la Feuil1.
MsgBox Right(Cells(J, 1), 2)
Alors que bien évidement c'est la cellule en feuil2 dont je souhaite
avoir les 2 derniers caractères !
Si je veux lui indiquer plus précisément la feuille Í utiliser avec
MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2)
J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet'
Petite précision, toutes les instructions sont dans un bloc encadré par
With feuil2 ... End with
Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et
lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est
souhaité. Comment puis-je m'en sortir ?
Au passage, je remercie grandement MichD pour l'éclairage sur le fait
que les combobox travaillent avec du texte et pas avec des nombres.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel__D
Bonjour, Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour,
Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour,
Dans un usf démarré en feuil1 mais dont les données sont en feuil2.
Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec
les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1.
MsgBox Right(Cells(J, 1), 2)
Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères !
Si je veux lui indiquer plus précisément la feuille Í utiliser avec
MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2)
J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet'
Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with
Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien
avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ?
Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent
avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Daniel
Le 09/01/2021 Í 12:05, Michel__D a écrit :
Bonjour, Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Merci beaucoup Michel_D. C'est l'identification de la feuille qui n'était pas au bon endroit. J'en apprend tous les jours grÍ¢ce aux forumeurs qui nous font don de leurs connaissances. Vous n'êtes peut-être pas MichD mais je suis sÍ»r qu'Excel a des accointances avec les Michel quand même ;-) Encore un grand merci et bonne année 2021. Daniel
Le 09/01/2021 Í 12:05, Michel__D a écrit :
Bonjour,
Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour,
Dans un usf démarré en feuil1 mais dont les données sont en feuil2.
Et alors que toutes les instructions (For ..., if... then .. else
..).se déroulent normalement avec les données de la feuil2,
l'instruction suivante se fait avec les données de la Feuil1.
MsgBox Right(Cells(J, 1), 2)
Alors que bien évidement c'est la cellule en feuil2 dont je souhaite
avoir les 2 derniers caractères !
Si je veux lui indiquer plus précisément la feuille Í utiliser avec
MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2)
J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet'
Petite précision, toutes les instructions sont dans un bloc encadré
par With feuil2 ... End with
Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et
lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est
souhaité. Comment puis-je m'en sortir ?
Au passage, je remercie grandement MichD pour l'éclairage sur le fait
que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2
... End With
Alors ceci devrait faire l'affaire :
MsgBox Right(.Cell(J, 1).Value, 2)
Merci beaucoup Michel_D. C'est l'identification de la feuille qui
n'était pas au bon endroit. J'en apprend tous les jours grÍ¢ce aux
forumeurs qui nous font don de leurs connaissances.
Vous n'êtes peut-être pas MichD mais je suis sÍ»r qu'Excel a des
accointances avec les Michel quand même ;-)
Encore un grand merci et bonne année 2021.
Daniel
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Merci beaucoup Michel_D. C'est l'identification de la feuille qui n'était pas au bon endroit. J'en apprend tous les jours grÍ¢ce aux forumeurs qui nous font don de leurs connaissances. Vous n'êtes peut-être pas MichD mais je suis sÍ»r qu'Excel a des accointances avec les Michel quand même ;-) Encore un grand merci et bonne année 2021. Daniel
MichD
Le 09/01/21 Í 06:05, Michel__D a écrit :
Bonjour, Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour, Michel_D a raison. Si tu n'es pas très familier avec le VBA, ce que propose Michel_D prend la forme comme ceci : With Feuil2 MsgBox Right(.Cell(J, 1).Value, 2) End With Attention : Feuil2 n'est pas le nom de l'onglet de la feuille o͹ se situe la cellule, mais la propriété "NAME" qui est affichée dans le projetVBA du classeur sous la rubrique "Microsoft Excel Objects" o͹ l'on retrouve la liste des feuilles de calcul du classeur. Elles ont cette présentation : Feuil2(toto) toto est le nom de l'onglet de la feuille de calcul Feuil2 est le nom de la propriété Name de l'objet Comme code, tu aurais utilisé ceci avec le nom de l'onglet de la feuille et tu aurais le même résultat. With Worksheets("toto") MsgBox Right(.Cell(J, 1).Value, 2) End With Ce que propose Michel_D est la meilleure approche. En utilisant la propriété "Name" de l'objet au lieu du nom de l'onglet de la feuille, tu as les avantages suivants : A ) Tu peux modifier le nom des onglets Í volonté et tu n'as pas besoin de modifier le code. B ) À l'exécution, le code s'exécute plus rapidement...mais avec la rapidité des processeurs d'aujourd'hui, on n'en est pas Í quelques nanosecondes de plus ou moins. C ) Le plus important, en utilisant ceci : With feuil2 , dès que tu tapes Í la ligne en dessous un "."(point), tu obtiens une liste déroulante des propriétés et méthodes de l'objet. Par conséquent, nul besoin de les mémoriser. Cela réduit aussi les fautes d'orthographe. MichD
Le 09/01/21 Í 06:05, Michel__D a écrit :
Bonjour,
Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour,
Dans un usf démarré en feuil1 mais dont les données sont en feuil2.
Et alors que toutes les instructions (For ..., if... then .. else
..).se déroulent normalement avec les données de la feuil2,
l'instruction suivante se fait avec les données de la Feuil1.
MsgBox Right(Cells(J, 1), 2)
Alors que bien évidement c'est la cellule en feuil2 dont je souhaite
avoir les 2 derniers caractères !
Si je veux lui indiquer plus précisément la feuille Í utiliser avec
MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2)
J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet'
Petite précision, toutes les instructions sont dans un bloc encadré
par With feuil2 ... End with
Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et
lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est
souhaité. Comment puis-je m'en sortir ?
Au passage, je remercie grandement MichD pour l'éclairage sur le fait
que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2
... End With
Alors ceci devrait faire l'affaire :
MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour,
Michel_D a raison. Si tu n'es pas très familier avec le VBA, ce que
propose Michel_D prend la forme comme ceci :
With Feuil2
MsgBox Right(.Cell(J, 1).Value, 2)
End With
Attention : Feuil2 n'est pas le nom de l'onglet de la feuille o͹ se
situe la cellule, mais la propriété "NAME" qui est affichée dans le
projetVBA du classeur sous la rubrique "Microsoft Excel Objects" o͹ l'on
retrouve la liste des feuilles de calcul du classeur. Elles ont cette
présentation : Feuil2(toto)
toto est le nom de l'onglet de la feuille de calcul
Feuil2 est le nom de la propriété Name de l'objet
Comme code, tu aurais utilisé ceci avec le nom de l'onglet de la feuille
et tu aurais le même résultat.
With Worksheets("toto")
MsgBox Right(.Cell(J, 1).Value, 2)
End With
Ce que propose Michel_D est la meilleure approche.
En utilisant la propriété "Name" de l'objet au lieu du nom de l'onglet
de la feuille, tu as les avantages suivants :
A ) Tu peux modifier le nom des onglets Í volonté et tu n'as pas besoin
de modifier le code.
B ) À l'exécution, le code s'exécute plus rapidement...mais avec la
rapidité des processeurs d'aujourd'hui, on n'en est pas Í quelques
nanosecondes de plus ou moins.
C ) Le plus important, en utilisant ceci : With feuil2 , dès que tu
tapes Í la ligne en dessous un "."(point), tu obtiens une liste
déroulante des propriétés et méthodes de l'objet. Par conséquent, nul
besoin de les mémoriser. Cela réduit aussi les fautes d'orthographe.
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour, Michel_D a raison. Si tu n'es pas très familier avec le VBA, ce que propose Michel_D prend la forme comme ceci : With Feuil2 MsgBox Right(.Cell(J, 1).Value, 2) End With Attention : Feuil2 n'est pas le nom de l'onglet de la feuille o͹ se situe la cellule, mais la propriété "NAME" qui est affichée dans le projetVBA du classeur sous la rubrique "Microsoft Excel Objects" o͹ l'on retrouve la liste des feuilles de calcul du classeur. Elles ont cette présentation : Feuil2(toto) toto est le nom de l'onglet de la feuille de calcul Feuil2 est le nom de la propriété Name de l'objet Comme code, tu aurais utilisé ceci avec le nom de l'onglet de la feuille et tu aurais le même résultat. With Worksheets("toto") MsgBox Right(.Cell(J, 1).Value, 2) End With Ce que propose Michel_D est la meilleure approche. En utilisant la propriété "Name" de l'objet au lieu du nom de l'onglet de la feuille, tu as les avantages suivants : A ) Tu peux modifier le nom des onglets Í volonté et tu n'as pas besoin de modifier le code. B ) À l'exécution, le code s'exécute plus rapidement...mais avec la rapidité des processeurs d'aujourd'hui, on n'en est pas Í quelques nanosecondes de plus ou moins. C ) Le plus important, en utilisant ceci : With feuil2 , dès que tu tapes Í la ligne en dessous un "."(point), tu obtiens une liste déroulante des propriétés et méthodes de l'objet. Par conséquent, nul besoin de les mémoriser. Cela réduit aussi les fautes d'orthographe. MichD
Daniel
Le 09/01/2021 Í 12:39, MichD a écrit :
Le 09/01/21 Í 06:05, Michel__D a écrit :
Bonjour, Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour, Michel_D a raison. Si tu n'es pas très familier avec le VBA, ce que propose Michel_D prend la forme comme ceci : With Feuil2    MsgBox Right(.Cell(J, 1).Value, 2) End With Attention : Feuil2 n'est pas le nom de l'onglet de la feuille o͹ se situe la cellule, mais la propriété "NAME" qui est affichée dans le projetVBA du classeur sous la rubrique "Microsoft Excel Objects" o͹ l'on retrouve la liste des feuilles de calcul du classeur. Elles ont cette présentation : Feuil2(toto) toto est le nom de l'onglet de la feuille de calcul Feuil2 est le nom de la propriété Name de l'objet Comme code, tu aurais utilisé ceci avec le nom de l'onglet de la feuille et tu aurais le même résultat. With Worksheets("toto")    MsgBox Right(.Cell(J, 1).Value, 2) End With Ce que propose Michel_D est la meilleure approche. En utilisant la propriété "Name" de l'objet au lieu du nom de l'onglet de la feuille, tu as les avantages suivants : A ) Tu peux modifier le nom des onglets Í volonté et tu n'as pas besoin de modifier le code. B ) À l'exécution, le code s'exécute plus rapidement...mais avec la rapidité des processeurs d'aujourd'hui, on n'en est pas Í quelques nanosecondes de plus ou moins. C ) Le plus important, en utilisant ceci : With feuil2 , dès que tu tapes Í la ligne en dessous un "."(point), tu obtiens une liste déroulante des propriétés et méthodes de l'objet. Par conséquent, nul besoin de les mémoriser. Cela réduit aussi les fautes d'orthographe. MichD
Bonjour MichD, Merci pour tous ces apports énormément enrichissants et qui me permettent d'avoir une vision plus affine des propriétés des noms utilisés et des objets. c'est vrai aussi que les différents codes que l'on rencontre n'ont pas tous la même durée d'exécution et cela n'eest pas toujours de l'ordre de la nanoseconde ;-) Bonne continuation et merci en tout cas dans cette volonté d'aider les néoexcelistes en perdition. Daniel
Le 09/01/2021 Í 12:39, MichD a écrit :
Le 09/01/21 Í 06:05, Michel__D a écrit :
Bonjour,
Le 09/01/2021 Í 10:43, Daniel a écrit :
Bonjour,
Dans un usf démarré en feuil1 mais dont les données sont en feuil2.
Et alors que toutes les instructions (For ..., if... then .. else
..).se déroulent normalement avec les données de la feuil2,
l'instruction suivante se fait avec les données de la Feuil1.
MsgBox Right(Cells(J, 1), 2)
Alors que bien évidement c'est la cellule en feuil2 dont je souhaite
avoir les 2 derniers caractères !
Si je veux lui indiquer plus précisément la feuille Í utiliser avec
MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2)
J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet'
Petite précision, toutes les instructions sont dans un bloc encadré
par With feuil2 ... End with
Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate
et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui
est souhaité. Comment puis-je m'en sortir ?
Au passage, je remercie grandement MichD pour l'éclairage sur le fait
que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With
feuil2 ... End With
Alors ceci devrait faire l'affaire :
MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour,
Michel_D a raison. Si tu n'es pas très familier avec le VBA, ce que
propose Michel_D prend la forme comme ceci :
With Feuil2
   MsgBox Right(.Cell(J, 1).Value, 2)
End With
Attention : Feuil2 n'est pas le nom de l'onglet de la feuille o͹ se
situe la cellule, mais la propriété "NAME" qui est affichée dans le
projetVBA du classeur sous la rubrique "Microsoft Excel Objects" o͹ l'on
retrouve la liste des feuilles de calcul du classeur. Elles ont cette
présentation : Feuil2(toto)
toto est le nom de l'onglet de la feuille de calcul
Feuil2 est le nom de la propriété Name de l'objet
Comme code, tu aurais utilisé ceci avec le nom de l'onglet de la feuille
et tu aurais le même résultat.
With Worksheets("toto")
   MsgBox Right(.Cell(J, 1).Value, 2)
End With
Ce que propose Michel_D est la meilleure approche.
En utilisant la propriété "Name" de l'objet au lieu du nom de l'onglet
de la feuille, tu as les avantages suivants :
A ) Tu peux modifier le nom des onglets Í volonté et tu n'as pas besoin
de modifier le code.
B ) À l'exécution, le code s'exécute plus rapidement...mais avec la
rapidité des processeurs d'aujourd'hui, on n'en est pas Í quelques
nanosecondes de plus ou moins.
C ) Le plus important, en utilisant ceci : With feuil2 , dès que tu
tapes Í la ligne en dessous un "."(point), tu obtiens une liste
déroulante des propriétés et méthodes de l'objet. Par conséquent, nul
besoin de les mémoriser. Cela réduit aussi les fautes d'orthographe.
MichD
Bonjour MichD,
Merci pour tous ces apports énormément enrichissants et qui me
permettent d'avoir une vision plus affine des propriétés des noms
utilisés et des objets.
c'est vrai aussi que les différents codes que l'on rencontre n'ont pas
tous la même durée d'exécution et cela n'eest pas toujours de l'ordre de
la nanoseconde ;-)
Bonne continuation et merci en tout cas dans cette volonté d'aider les
néoexcelistes en perdition.
Daniel
Bonjour, Dans un usf démarré en feuil1 mais dont les données sont en feuil2. Et alors que toutes les instructions (For ..., if... then .. else ..).se déroulent normalement avec les données de la feuil2, l'instruction suivante se fait avec les données de la Feuil1. MsgBox Right(Cells(J, 1), 2) Alors que bien évidement c'est la cellule en feuil2 dont je souhaite avoir les 2 derniers caractères ! Si je veux lui indiquer plus précisément la feuille Í utiliser avec MsgBox Worksheets("feuil2").Right(Cells(J, 1), 2) J'ai une erreur 438 'Propriété ou méthode non gérée par cet objet' Petite précision, toutes les instructions sont dans un bloc encadré par With feuil2 ... End with Alors, j'ai bien fait un essai en mettant Sheets("feuil2").Activate et lÍ ma msgbox travaille bien avec la feuil2 mais c'est pas ce qui est souhaité. Comment puis-je m'en sortir ? Au passage, je remercie grandement MichD pour l'éclairage sur le fait que les combobox travaillent avec du texte et pas avec des nombres.
Alors je ne suis pas MichD, mais si c'est bien dans un bloc With feuil2 ... End With Alors ceci devrait faire l'affaire : MsgBox Right(.Cell(J, 1).Value, 2)
Bonjour, Michel_D a raison. Si tu n'es pas très familier avec le VBA, ce que propose Michel_D prend la forme comme ceci : With Feuil2    MsgBox Right(.Cell(J, 1).Value, 2) End With Attention : Feuil2 n'est pas le nom de l'onglet de la feuille o͹ se situe la cellule, mais la propriété "NAME" qui est affichée dans le projetVBA du classeur sous la rubrique "Microsoft Excel Objects" o͹ l'on retrouve la liste des feuilles de calcul du classeur. Elles ont cette présentation : Feuil2(toto) toto est le nom de l'onglet de la feuille de calcul Feuil2 est le nom de la propriété Name de l'objet Comme code, tu aurais utilisé ceci avec le nom de l'onglet de la feuille et tu aurais le même résultat. With Worksheets("toto")    MsgBox Right(.Cell(J, 1).Value, 2) End With Ce que propose Michel_D est la meilleure approche. En utilisant la propriété "Name" de l'objet au lieu du nom de l'onglet de la feuille, tu as les avantages suivants : A ) Tu peux modifier le nom des onglets Í volonté et tu n'as pas besoin de modifier le code. B ) À l'exécution, le code s'exécute plus rapidement...mais avec la rapidité des processeurs d'aujourd'hui, on n'en est pas Í quelques nanosecondes de plus ou moins. C ) Le plus important, en utilisant ceci : With feuil2 , dès que tu tapes Í la ligne en dessous un "."(point), tu obtiens une liste déroulante des propriétés et méthodes de l'objet. Par conséquent, nul besoin de les mémoriser. Cela réduit aussi les fautes d'orthographe. MichD
Bonjour MichD, Merci pour tous ces apports énormément enrichissants et qui me permettent d'avoir une vision plus affine des propriétés des noms utilisés et des objets. c'est vrai aussi que les différents codes que l'on rencontre n'ont pas tous la même durée d'exécution et cela n'eest pas toujours de l'ordre de la nanoseconde ;-) Bonne continuation et merci en tout cas dans cette volonté d'aider les néoexcelistes en perdition. Daniel