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

XL 2016 Renvoyer une valeur de cellule dans une macro

MaximeLAT

XLDnaute Nouveau
Bonjour,

Je souhaiterai renvoyer une valeur de cellule dans la macro :

C'est à dire que à la place de ma sélection A1:J48 je souhaiterai qu'il prenne en compte la valeur d'une cellule dans laquelle il y aura ma sélection variable en fonction de ce que je veux imprimer.

Sheets("etiquettes").Select
Range("A1:J48").Select
Selection.PrintOut Copies:=1, Collate:=True
ActiveWindow.SmallScroll Down:=-24

Je ne suis pas très doué en Macro
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Quelle cellules de quelle feuille contiendra quoi, exactement, sur quoi baser ce qu'il y a lieu d'imprimer ?
Il faut toujours joindre un classeur modèle montrant exactement ce qu'on a et ce qu'on veut.
 

MaximeLAT

XLDnaute Nouveau
Bonjour.
Quelle cellules de quelle feuille contiendra quoi, exactement, sur quoi baser ce qu'il y a lieu d'imprimer ?
Il faut toujours joindre un classeur modèle montrant exactement ce qu'on a et ce qu'on veut.
Bonjour, ci-joint un classeur avec ce que j'ai en réel et l'explication de ce que je voudrai. (en espérant être clair)
Merci.
 

Pièces jointes

  • Classeur 1.xlsm
    27.5 KB · Affichages: 14

patricktoulon

XLDnaute Barbatruc
Bonjour @MaximeLAT
dans le module de ta feuille données je met ceci
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 And Target.Row <= 10 Then [C12] = Target(1)
End Sub
dans ton module1 je met ceci

Code:
Sub impressionetiqu()
If [C12] <> "" Then Sheets("etiquettes").Range(Feuil1.[C12].Text).PrintOut Copies:=1, Collate:=True
End Sub
donc quand tu sélectionne une des cellules en C4:C10 alors C12 prend la valeur de cette cellule sélectionnée
et quand tu clique sur le bouton imprimante tu imprime l’adresse de la range inscrite en C12
 

job75

XLDnaute Barbatruc
Bonjour MaximeLAT, Bernard, patricktoulon,
VB:
Sub ImpressionEtiquettes()
    If TypeName(Evaluate([C12].Value)) <> "Range" Then MsgBox "C12 doit contenir la référence d'une plage !", 48: Exit Sub
    With Sheets("etiquettes")
        .PageSetup.PrintArea = [C12]
        .PrintPreview 'pour tester
        '.PrintOut 'pour imprimer
    End With
End Sub
A+
 

Pièces jointes

  • Classeur(1).xlsm
    27.9 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
bonjour job75
VB:
 If TypeName(Evaluate([C12].Value)) <> "Range" Then MsgBox "C12 doit contenir la référence d'une plage !", 48: Exit Sub
c'est ce qui manquait dans la mienne j'ai pas pensé au contrôle de validité seulement aux blanc
 

patricktoulon

XLDnaute Barbatruc
re
c'est marrant comme le ".value" implicite ou la non utilisation de "set" peut faire la différence
VB:
Sub test()
    MsgBox TypeName(Evaluate("A1:A10"))
    
    x = Evaluate("A1:A10")
    MsgBox "type de x :" & TypeName(x) & vbCrLf & "nombre de ligne du tableau:" & UBound(x)
    
End Sub
 

Discussions similaires

Réponses
5
Affichages
288
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…