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

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
 

a_loic

XLDnaute Junior
Je jure que ca ne fonctionne pas... Ou alors je ne comprends pas

Je te joins mon fichier avec les modifs que j'ai faite, tu y verras peut être plus clair.
 

Pièces jointes

  • TEST MAILS.xlsm
    136.7 KB · Affichages: 35

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
161
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…