MACRO choisir onglet dans cellule

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
 

Yurperqod

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

Yurperqod

XLDnaute Occasionnel
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.
 

a_loic

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

Yurperqod

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

Discussions similaires

Réponses
2
Affichages
149

Statistiques des forums

Discussions
312 540
Messages
2 089 408
Membres
104 163
dernier inscrit
Lolo37