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_loic

XLDnaute Junior
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
 
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

Discussions similaires

  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
447
Réponses
17
Affichages
2 K
Réponses
2
Affichages
954
Réponses
1
Affichages
1 K
Retour