Code VB pour revenir sur une feuille

Fermé
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 - 7 nov. 2014 à 19:02
 Maurice - 8 nov. 2014 à 11:02
Bonjour,

Voilà, j'ai créer un tableau pour le suivi d'appels téléphonique (feuille qui porte le nom du mois en cours)
Je récapitule (à l'aide de la fonction "recherche") le contenu de chaque ligne dans une fiche message sur une autre feuille (que je nomme "fiche message")

A l'aide d'un petit code VB que j'ai trouvé, j'envoi ma fiche message par mail à la personne concernée par le message téléphonique sur un simple Clic qui se présente comme ceci :

[ Private Sub CommandButton1_Click()
ActiveSheet.Range("A1:M40").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Item.To = Range("a42") 'récupère l'adresse mail du destinataire
.Item.Subject = "Objet de mon message"
.Item.Send
End With
Range("A1").Select
End Sub ]

Je voudrait rajouter dans ce petit code une ligne ou deux qui me permettent de revenir automatiquement sur la première feuille (feuille qui porte le nom du mois en cours) et qui ramène automatiquement mon curseur sur la dernière ligne saisie dans le tableau.

Merci à la personne qui pourra m'aider
Joss062
A voir également:

3 réponses

m@rina Messages postés 20088 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 27 avril 2024 11 272
7 nov. 2014 à 19:29
Bonjour,

Avant Range("A1").Select, tu mets :
Sheets(1).Activate

ça active la première feuille. Pour aller sur une feuille avec un nom particulier, tu remplaces 1 par le nom de la feuille entre guillemets.

m@rina

1
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
7 nov. 2014 à 22:14
Merci morina, ca marche si je supprime le Range("A1").Select
sinon j'ai un débogage...
Merci à toi
Joss
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
7 nov. 2014 à 20:45
Bonjour,

Si la colonne A contient une donnée dans la dernière ligne renseignée :

    With Worksheets(MonthName(Month(Date)))
.Activate
.Range("A" & Rows.Count).End(xlUp).Select
End With


A+
1
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
7 nov. 2014 à 22:24
Gyrus,
ça n'a pas de conséquence... je reviens automatiquement sur la dernière cellule sélectionné... et non en colonne "A"
Comment ça se fait ?
Merci a toi
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
8 nov. 2014 à 06:39
As-tu effectué une copie strictement identique de la procédure ?
La feuille correspondant au mois en cours est-elle activée par cette procédure ?
Si oui, quelle est la cellule sélectionnée en fin de procédure ?

Quelques explications pour te permettre d'y voir plus clair :

Explication sur l'instruction "Worksheets(MonthName(Month(Date)))"
Date => 8/11/2014
Month(Date)=> 11
MonthName(Month(Date)=> novembre
Worksheets(MonthName(Month(Date) )) correspond donc à la feuille qui porte le nom du mois en cours.

L'instruction With permet d'appliquer une série d'instructions à la feuille indiquée, sans qualifier à chaque fois le nom de la feuille.

.Activate permet donc d'activer la feuille "novembre". Cette méthode revient à cliquer sur l'onglet de la feuille.

Ensuite, une explication sur l'instruction ".Range("A" & Rows.Count).End(xlUp).Select"
Rows.Count correspond au nombre de lignes de la feuille (Exemple : 1048576 avec Excel 2007).
.Range("A" & Rows.Count) correspond à la dernière cellule de la colonne A (soit A1048576 avec Excel 2007).
.Range("A" & Rows.Count).End(xlUp) correspond à la première cellule renseignée lorsqu'on remonte la colonne A. C'est donc la dernière cellule renseignée de cette colonne.

Tu peux placer la procédure dans un module standard et la tester directement pour vérifier le fonctionnement.
Sub Test()
With Worksheets(MonthName(Month(Date)))
.Activate
.Range("A" & Rows.Count).End(xlUp).Select
End With
End Sub


A+
0
Joss062 Messages postés 36 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 12 mai 2016 3
8 nov. 2014 à 10:39
Merci pour cette petite explication, effectivement, expliqué comme ça, on y voit beaucoup plus clair (merci pour la patience). Dsl, je suis novice en la matière...
Je test ça et te tiens au courant.
Tant que j'y suis, pourrais tu me dire ce que je dois rajouter dans ma procédure précédente (concernant l'envoi du mail) pour pouvoir mettre un destinataire en copie (cc)
J'ai rajouté : .Item.To = Range("référence de la cellule avec l'adresse mail") mail ça marche pas...
Merci à toi
0
Bonjour

J'aime aussi comme ca

Sub Test1()
Worksheets(MonthName(Month(Date))).Select
Application.Goto Range("A" & Rows.Count).End(xlUp), True
End Sub

A+
Maurice
0