S'adresse à tous, question simple

Roland_M

XLDnaute Barbatruc
bien le bonjour à tous les forumeurs !

j'ai une petite question à vous poser sur un phénomène bizarre !
concernant range("??").select en direct sur une feuille selectionnée

voilà, je viens d'intervenir sur un classeur somme toute assez simple
1 feuille accueil et 12 feuilles mois

sur la feuille d'accueil il est possible de faire direct Range("A1").Select
par-contre dans toutes les feuilles mois c'est impossible !? erreur 1004 !
il faut toujours préciser autant de fois que nécessaire le nom de la feuille avec !?
exemple Range("a1").Select ou Cells(NoLig,NoCol).Select = erreur
exemple Sheets("NomFeuil").Range("A1").select comme ça OK !?

d'où cela pourrait'il bien provenir !? dans Outils les Options... !?

je précise qu'il n'y a aucune protection de feuilles !

Roland
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

Bonjour Roland

on ne peut jamais sélectionner directement une cellule sur une feuille différente de la feuille active, il faut procéder en 2 temps, d'abord la feuille puis la cellule.

a noter qu'il est rarement nécessaire de sélectionner en vba...

bon après midi
@+
 

Roland_M

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

re

c'est bien évidemment comme ça que je pratique !(quand même)
Sheets(No).Activate: Sheets(No).Select: Range("A1").Select <<<< là erreur
Sheets(No).Activate: Sheets(No).Select: Sheets(No).Range("A1").Select <<<< là OK ????
il faut toujours repréciser la feuille !?

je précise que je ne suis pas un débutant (au cas où) car ce serait possible
je programme depuis des années début 1980 , je sais de quoi il en retourne
si je m'adresse à vous c'est qu'il y a un problème particulier !

Roland
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

re

allons pierrot serais tu succeptible à ce point !?
je ne pense pas avoir été inconvenable où alors je ne l'ai pas exprès
je m'excuse si je me suis mal exprimé ! toutes mes amitiés !

regarde j'ai joint le classeur et tu comprendras mieux

allez ch'tio biloute, au plaisir.

cordialement Roland
 

Pièces jointes

  • Essai calendrier.zip
    35.7 KB · Affichages: 19
  • Essai calendrier.zip
    35.7 KB · Affichages: 17
  • Essai calendrier.zip
    35.7 KB · Affichages: 15
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

Re

j'ai trouvé ta réponse un peu sêche.... mais bon... en plus sans voir le code

ton code est placé dans le module de la feuille "année", et lors de l'erreur tu es sur une autre feuille, donc quand tu dis :

Code:
Cells(NoDeLigDepart + J - 1, 1).Select

il doit selectionner la cellule correspondante DANS LA FEUILLE "ANNEE", alors que celle ci n'est pas active, donc il faut bien nommer la feuille sur laquelle tu veux intervenir.

Code:
Sheets(Feuil$).Cells(NoDeLigDepart + J - 1, 1).Select

autre solution, mettre le code dans un module standard.
 

Roland_M

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

re

c'est tout à fait exacte !

comme quoi on peut toujours faire des erreurs d'inattention !
c'est comme les fautes de frappe, on fait des fixations et on ne vois pas ce qui crève les yeux

encore que !?
Feuil$ = FNomDuMois$(M) '<<<<<<<<< ceci donne le nom de la feuille si M=1 Feuil$="Janvier"
Sheets(Feuil$).Activate: Sheets(Feuil$).Select ' <<<<<<< donc ici je suis dessus !?
Sheets(Feuil$).Cells(NoDeLigDepart + J - 1, 1).Select '<<<< je ne devrais pas être obligé de préciser !?




encore merci pour ta réponse et bonne journée à toi.

Roland
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

Bonjour à tous

A tester

Code:
Sheets(Feuil$).Activate: Sheets(Feuil$).Select
' Sheets(Feuil$).Cells(NoDeLigDepart + J - 1, 1).Select   ' ICI OK
ActiveSheet.Cells(NoDeLigDepart + J - 1, 1).Select
 

Excel_lent

XLDnaute Impliqué
Re : S'adresse à tous, question simple

Salut Roland, Pierrot, MJ13, tous les anciens* (comme moi) et toute la jeunesse, sans oublier les autres.

re
...
encore que !?
Feuil$ = FNomDuMois$(M) '<<<<<<<<< ceci donne le nom de la feuille si M=1 Feuil$="Janvier"
Sheets(Feuil$).Activate: Sheets(Feuil$).Select ' <<<<<<< donc ici je suis dessus !?
Quand tu écris "donc je suis dessus !?" tu penses que les références du projet sont associées à cette feuille. Or elles ne le sont pas toutes !
Range(…).select qui suit n'a de sens que dans la feuille dans laquelle est écrite la macro !
Si tu écris la procédure dans la feuille en question, tu n'auras pas d'erreur.
C'est ce que Pierrot disait en d'autres termes.

Par contre, comme le propose MJ,
Activesheet.Cells() n'a de sens que dans la feuille active (Activate ou Select).

A quoi sert le Sheets(Feuil$).Activate devant le Sheets(Feuil$) ? A rien je pense*.

Bonne journée à tout un chacun.

* mais ce n'est pas parce que j'ai commencé à programmer sur le ZX81 (1 ko de mémoire vive) le siècle dernier (1973 si ma mémoire ne flanche pas) que j'ai raison;).
 

Roland_M

XLDnaute Barbatruc
Re : S'adresse à tous, question simple

re
c'est tout à fait juste !
et comme le disait Pierrot, dans ce cas mettre le code dans un module standard.
il est vrai que là j'étais dans un module feuille !

quand à moi, pour le coup, j'ai la mémoire qui flanche sérieusement depuis que j'ai passé les 60 ans(départ retraite et perte de ma femme)

merci le rappel.


Roland
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
835

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia