Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Range, mais comment ça marche ?

  • Initiateur de la discussion Initiateur de la discussion JCS isère
  • 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 !

J

JCS isère

Guest
Bonsoir à tous

Fidèle lecteur de votre forum, je tiens à vous féliciter pour sa qualité et son bon esprit. Aujourd'hui je me décide à écrire car je bloque sur quelques points en VBA.

J'ai un classeur avec trois feuilles, comment à partir d'un bouton situé sur la 1ere feuille, se rendre sur la 2eme feuille et y imprimer les cellules non vides à partir de la ligne 14 (entêtes).
J'ai fait des essais avec Range, mais j'ai un message "erreur d'exécution 1004" la méthode Select de la classe Range à échoué.
Pourriez vous me dire à quoi correspond ce message et comment corriger mon code ... et si vous avez le temps j'ai plein d'autres questions en suspend.

Merci
 
Re : Range, mais comment ça marche ?

Voici le code

Private Sub CommandButtonImprimerRèglements_Click()
Sheets("règlements").Activate
Range("N14").Select
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, "E14").Select
Selection.PrintOut Copies:=1, Collate:=True
Sheets("GTC Vienne").Activate
End Sub
 
Re : Range, mais comment ça marche ?

Bonsoir,
je suppose que ton bouton de commande est sur la feuille GTC?
tu ne peux donc sélectionner une autre cellule d'une autre feuille dans une Private Sub insérée dans le code de la feuille GTC,
je te propose de remplacer par :

Code:
Private Sub CommandButton1_Click()
With Sheets("règlements")
    .Range("E14:N" & .[N65000].End(xlUp).Row).PrintOut Copies:=1, Collate:=True
End With
End Sub
 
Re : Range, mais comment ça marche ?

Bonsoir JCS isère, Staple1600, Banzai64, le Forum,

JCS isère, pour régler ton problème simplement, copies ton code dans une procédure placée dans un module standard (ex: Module1) et fais appel à cette procédure dans l'évènement click de ton bouton.

Par ailleurs, en VBA, les Select sont généralement inutiles et souvent sources d'erreur (comme celle que tu rencontres).

Cordialement,

EDITION : pardon et bonsoir bhbh, je ne t'avais pas vu venir... Effectivement, j'ai interprété le code comme toi et ta façon de faire est une bonne solution également.
 
Dernière édition:
Re : Range, mais comment ça marche ?

Dans l'ordre

- myDearFriend, tu me conseilles de copier mon code dans une procédure, mais comment je lance cette procédure.

- Staple1600, oui la macro de bhbh fonctionne bien.

- bhbh merci pour ta macro, elle fonctionne bien, mais tu me dis qu'avec une PrivateSub on ne peut pas sélectionner une cellule dans une autre feuille, pourtant ton code fonctionne et c'est une PrivateSub. Peux tu m'expliquer.
 
Re : Range, mais comment ça marche ?

Re-,
regarde le code, je ne sélectionne aucune cellule
il en est de même si tu voulais écrire dans cette autre feuille, utilises l'instruction With :

par exemple :

With Sheets("règlements")
.Range("A1").Value = Date
.Range("E14:N" & .[N65000].End(xlUp).Row).PrintOut Copies:=1, Collate:=True
End With

Remarque le . (point) devant .Range ou devant .[N65000]
cela veut dire que je fais référence à la feuille ("règlements"), mais sans l'activer ou la sélectionner. De plus, dans la cellule A1, tu auras la date de l'impression (pour l'exemple)
 
Re : Range, mais comment ça marche ?

bhbh, je te remercie pour tes explications, cela me permet de progresser.

myDearFriend, me conseille de copier mon code dans un module standard, quel avantage par rapport au code actuel et comment on fait pour créer ce module.
 
Re : Range, mais comment ça marche ?

C'est pas bien de se moquer, au fait j'en ai profité pour supprimer mes 10 modules vides (crée à l'insu de mon plein grès comme disait l'autre) ...

... et vous n'avez pas répondu à ma question "myDearFriend, me conseille de copier mon code dans un module standard, quel avantage par rapport au code actuel "

Merci
 
Re : Range, mais comment ça marche ?

Re,
faut pas le prendre mal JCS isère, mille excuse si je t'ai froissé.
Pour répondre à ta question, d'une feuille à l'autre,les modules gèrent la méthode "Select" et "Activate" alors que les "Private Sub" non (si je ne me trompe pas).
Ce qui est sûr, c'est que "Select" n'apporte rien dans un code mais au contraire celà l'alourdi et le ralenti........
 
Re : Range, mais comment ça marche ?

Re le fil,

myDearFriend, me conseille de copier mon code dans un module standard, quel avantage par rapport au code actuel
La proposition que j'ai faite avait le simple avantage de ne pas remettre en cause ton propre code et de te démontrer que ce code pouvait être fonctionnel s'il était placé dans un module à part. C'était une façon d'essayer de te faire comprendre l'effet pervers qui peut résulter de l'utilisation des Select en VBA...

Il est évident que le code proposé par bhbh est ici la solution a adopter! (même si je reste persuadé qu'un module de code d'une feuille n'est pas le meilleur endroit pour coder le traitement d'une autre feuille...)

Cordialement,
 
Re : Range, mais comment ça marche ?

Merci à tous pour ces explications, et pour le temps que vous y avez consacré, Skoobi, je te rassure, tu ne m'a nullement froissé, l'humour a toujours sa place même lorsque l'on parle de code VBA. J'ai appris quelque chose en vous relisant et c'est là le plus important.
A une prochaine fois peut être, il est l'heure d'aller bosser.
 
- 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

Réponses
4
Affichages
715
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…