Microsoft 365 Valeur cellule dans un macro

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

juju91

XLDnaute Junior
Bonjour à tous,

j'ai encore besoin de votre aide.

je souhaiterais récupérer la valeur contenue dans une cellule (nom d'un onglet) d'un feuille (PARAMETRAGE) et de l'intégrer dans une macro qui doit imprimer l'onglet définie.

Ci dessous la macro que j'ai commencé à "créer" mais , bien évidement elle ne fonctionne pas.

Sub AAAAA_IMPRESSION_Bar_sucré_fruits_coupé()
Application.ScreenUpdating = False
If UCase(Worksheets("PARAMETRAGE").Range("B20")) Then
Worksheets("Bar sucré fruits coupé").Visible = True
Worksheets("Bar sucré fruits coupé").Select
Sheets("Bar sucré fruits coupé").PrintOut From:=1, To:=1, Copies:=1
Worksheets("Bar sucré fruits coupé").Visible = False

If UCase(Worksheets("PARAMETRAGE").Range("B18")) Then
Worksheets("Bar sucré").Visible = True
Worksheets("Bar sucré").Select
Sheets("Bar sucré").PrintOut From:=1, To:=1, Copies:=1
Worksheets("Bar sucré").Visible = False
Application.ScreenUpdating = True
End If
End If
End Sub


je ne suis pas certain d'avoir été clair, je mets donc en PJ fichier simplifié.

par avance merci de votre aide.

Cdt
 

Pièces jointes

Bonjour
merci d'avoir pris du temps pour répondre à ma demande.
En faite le souhaiterais remplacer le nom de la feuille a imprimer par la valeur de la cellule qui ce trouve dans la cellule de la colonne A
les nom des onglets peuvent évoluer, d'où ma demsnde

j'ai essayé cela mais ça ne fonctionne pas... et ca me semble un peu bancale..

If UCase(Worksheets("PARAMETRAGE").Range("B20")) Then
Worksheets(UCase(Worksheets("PARAMETRAGE").Range("A20")).value).Visible = True
Worksheets((UCase(Worksheets("PARAMETRAGE").Range("A20")).value)).Select
Sheets((UCase(Worksheets("PARAMETRAGE").Range("A20")).value)).PrintOut From:=1, To:=1, Copies:=1
Worksheets((UCase(Worksheets("PARAMETRAGE").Range("A20")).value)).Visible = False


Encore merci pour votre temps.
 
Re
Essayez votre code comme ceci
VB:
Sub AAAAA_IMPRESSION_Bar_sucré_fruits_coupé()
Dim feuille As String
Application.ScreenUpdating = False
With Worksheets("PARAMETRAGE")
    If UCase(.Range("B20")) = "VRAI" Then
        feuille = .Range("A20")
        With Worksheets(feuille)
            .Visible = True
            .Select
            .PrintOut From:=1, To:=1, Copies:=1
            .Visible = False
        End With

        If UCase(.Range("B18")) = "VRAI" Then
            feuille = .Range("A18")
            With Worksheets(feuille)
                .Visible = True
                .Select
                .PrintOut From:=1, To:=1, Copies:=1
                .Visible = False
            End With
        End If
    End If
End With
Application.ScreenUpdating = True
End Sub

Attention que :
- le nom dans la colonne A doit être strictement identique à celui de vos feuilles. Ce qui n'est pas le cas pour la cellule A20 par exemple.
- dans votre code l'impression de la feuille dont le nom est mentionné en A18 ne sera faite que si A20 est mentionné VRAI
 
Bonjour
merci pour votre aide.

Comme DAN l'a indiqué dés que l'une des feuilles n'a pas une condition ''VRAI" les feuilles suivantes ne sont pas imprimées .
Dans le code suivant ( voir le fichier joint)
La feuille dont le nom est mentionné en A18 n'est pas imprimée puisque A19 n'est pas VRAI.
Comment passer à la vérification suivante?
En faite je souhaiterais que seul les feuilles correspondant à la condition VRAI soient imprimées.

Sachant que dans mon fichier original il y a 28 ''feuilles" à vérifier.

Sub AAAAA_IMPRESSION_Bar_sucré_fruits_coupé()
Dim feuille As String
Application.ScreenUpdating = False
With Worksheets("PARAMETRAGE")

If UCase(.Range("B20")) = "VRAI" Then
feuille = .Range("A20")
With Worksheets(feuille)
.Visible = True
.Select
.PrintOut From:=1, To:=1, Copies:=.Range("A1").Value
.Visible = False
End With

If UCase(.Range("B19")) = "VRAI" Then
feuille = .Range("A19")
With Worksheets(feuille)
.Visible = True
.Select
.PrintOut From:=1, To:=1, Copies:=.Range("A1").Value
.Visible = False
End With

If UCase(.Range("B18")) = "VRAI" Then
feuille = .Range("A18")
With Worksheets(feuille)
.Visible = True
.Select
.PrintOut From:=1, To:=1, Copies:=.Range("A1").Value
.Visible = False
End With


End If
End If
End If
End With
Application.ScreenUpdating = True

End Sub


Merci du temps passé sur ma demande.

Cdt
 

Pièces jointes

Bonjour
Dans votre fichier on n'a pas de données en A14 à A17 . Normal ou pas ?

NB : Lorsque vous postez un code dans votre demande, pensez à utiliser les balises de code en cliquant sur l'icône </> disponible dans la barre de menu et en collant votre code dans la fenêtre. C'est nettement plus lisible pour celui qui vous répond.
 
Dernière édition:
Re,

Essayez le code comme ceci

VB:
Sub AAAAA_IMPRESSION_Bar_sucré_fruits_coupé()
Dim feuille As String
Dim cel As Range

Application.ScreenUpdating = False

With Worksheets("PARAMETRAGE")
    For Each cel In .Range("B14:B20") 'rajouté point devant Range (voir commentaire de ToofatBoy dans post suivant)
        If UCase(cel.Value) = "VRAI" And cel.Offset(0, -1) <> vbNullString Then
            feuille = cel.Offset(0, -1)
            With Worksheets(feuille)
                .Visible = True
                .Select
                .PrintOut From:=1, To:=1, Copies:=.Range("A1").Value
                .Visible = False
            End With
        End If
    Next cel  
End With
Application.ScreenUpdating = True

End Sub

Si ce code résout votre demande pensez à cocher la case à cocher à droite du ou des posts qui vous ont apporté la réponse
 
Dernière édition:
Sur votre fichier posté, je n'ai pas de soucis avec le dernier code que vous ai proposé.
C'est votre vrai fichier que vous avez posté ?

Au besoin, cliquez sur sub AAAA....., puis utilisez la touche F8 pour avancer pas à pas dans le code. cela vous permettra de voir ce qui se passe
 
Hello,
Le premier des deux With imbriqués ne me semble pas très utile, surtout si ensuite tu ne mets pas un point devant Range.
Me trompé-je ?
Oui effectivement (merci je corrige - je l'avais mis chez moi pourtant....) mais son souci est ailleurs et probablement dans son vrai fichier

Le code peut être d'ailleurs ceci
VB:
Sub AAAAA_IMPRESSION_Bar_sucré_fruits_coupé()
Dim feuille As String
Dim cel As Range

Application.ScreenUpdating = False

For Each cel In Worksheets("PARAMETRAGE").Range("B14:B20")
    If UCase(cel.Value) = "VRAI" And cel.Offset(0, -1) <> vbNullString Then
        feuille = cel.Offset(0, -1)
        With Worksheets(feuille)
            .Visible = True
            .Select
            .PrintOut From:=1, To:=1, Copies:=.Range("A1").Value
            .Visible = False
        End With
    End If
Next cel    
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
- 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
XL 2021 VBA excel
Réponses
4
Affichages
386
Réponses
10
Affichages
675
Retour