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

MACRO choisir onglet dans cellule

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

A

a_loic

Guest
Bonjour à tous,

Je suis à la recherche d'un information certainement simple... 🙁
J'ai beau avoir cherché je ne trouve pas ma spécificité.

J'ai une macro top qui envoie par mail un onglet, voici le début du code que j'utilise dans un autre tableau :

Code:
Sub EnvoiMail()

If MsgBox("Envoyer la demande aux personnes concernées ?", 36, "Confirmation") = vbYes Then

    Dim rng As Range
    Dim OutApp As Object
    Dim OutMail As Object

    Set rng = Nothing
    On Error Resume Next
  
    Set rng = Sheets("Demande ").Range("B1:J46").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0


Ma question :

La partie "Sheets("Demande ").Range("B1:J46").SpecialCells(xlCellTypeVisible)"

Le nom de l'onglet à traiter se trouve en cellule G5 de l'onget "Mail" et donc n'est pas toujours le même onglet...


De la même facon, une seconde partie :

Code:
    With OutMail
        .To = "aaa.bbb@CCC.com"
        .CC = ""
        .BCC = ""
        .Subject = "Demande" & Range("D21").Value & " (" & Range("D25").Value & ")"
        .HTMLBody = RangetoHTML(rng)
        .Send

Le mail doit être envoyées à l'adresse mail inscrite en G9 de l'onglet "Mail"


Merci d'avance pour votre aide 🙂

Excellente journée,

Loïc
 
Remplaces la première macro par celle-ci
VB:
Sub Boucle_Test_V2()
Dim Feuille As Worksheet
Select Case Sheets("Mail").Range("G5").Text
Case Is = "Tous"
For Each Feuille In Worksheets
If IsNumeric(Feuille.Name) Then
Destinataire = Application.VLookup(Feuille.Name * 1, Sheets("Mail").Range("B4:C37"), 2, False)
envoiemail Feuille.Name
End If
Next
Case Else
Destinataire = Sheets("Mail").Range("G9").Text
envoiemail Sheets("Mail").[G5].Text
End Select
End Sub
 
Oui 🙂

Les mails sont maintenant bien partis, 😀

Mais par exemple, si tu prends l'onglet "18" du fichier que j'ai mis, les données sont vides et le mail s'envoie quand meme, sans données dedans.
 
Pour les feuilles vides
Inspire toi de ce test pour modifier la macro Boucle_Test_V2
VB:
Sub Test()
If Application.CountBlank(ActiveSheet.Cells) = 17179869184# Then
MsgBox "feuille vide"
Else
MsgBox "feuille non vide"
End If
End Sub
ça devrait donc ressembler à
For Each Feuille In Worksheets
If IsNumeric(Feuille.Name) Then
If Not Application.CountBlank(Feuill.Cells) = 17179869184# Then

17179869184= nombre ce cellules d'une feuille excel dans Excel 2010.
 
J'ai honte de revenir encore 🙁

J'ai réussi à intégrer la ligne, comme tu me l'as dit mais si en "G5" il y a un numéro et pas "tous", même si l'onglet est vide, cela n'empêche pas l'envoi du mail vide...

La macro donne ceci actuellement :

Code:
Sub Boucle_Test_V2()
Dim Feuille As Worksheet
Select Case Sheets("Mail").Range("G5").Text
Case Is = "Tous"
For Each Feuille In Worksheets
If IsNumeric(Feuille.Name) Then
If Not Application.CountBlank(Feuille.Cells) = 17179869184# Then
 Destinataire = Application.VLookup(Feuille.Name * 1, Sheets("Mail").Range("B4:C37"), 2, False)
 envoiemail Feuille.Name
End If
End If
Next
Case Else
 Destinataire = Sheets("Mail").Range("G9").Text
 envoiemail Sheets("Mail").[G5].Text
End Select
End Sub
 
Bonjour le forum
Testes avec cette modification
Code:
Sub Boucle_Test_V3()
Dim Feuille As Worksheet
Select Case Sheets("Mail").Range("G5").Text
Case Is = "Tous"
For Each Feuille In Worksheets
If IsNumeric(Feuille.Name) Then
If Not Application.CountBlank(Feuille.Cells) = 17179869184# Then
Destinataire = Application.VLookup(Feuille.Name * 1, Sheets("Mail").Range("B4:C37"), 2, False)
envoiemail Feuille.Name
End If
End If
Next
Case Else
Destinataire = Sheets("Mail").Range("G9").Text
If Not Application.CountBlank(Sheets(Sheets("Mail").[G5].Text).Cells) = 17179869184# Then
envoiemail Sheets("Mail").[G5].Text
End if
End Select
End Sub
 
- 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

  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
599
Réponses
17
Affichages
2 K
Réponses
2
Affichages
1 K
E
Réponses
1
Affichages
1 K
S
Réponses
3
Affichages
2 K
S
Réponses
3
Affichages
1 K
Solo_Wing75
S
O
Réponses
0
Affichages
574
Olic78124
O
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…