Autres Imprimer une plage de cellule

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

Je souhaite à partir d'un bouton sur un Userform lancer l'impression d'une plage de cellules (C5:B10° dans la feuille active (Feuil1).
Ceci sur le l'A4
J'ai trouvé ceci comme code mais toujours erreur 1004 "le nombre doit être compris entre 1 et32767"!

Quelqu'un peut m'expliquer ?
Merci d'avance

VB:
With Sheets("Feuil1").PageSetup
    .PrintArea = "C5:B10"
    .PaperSize = xlPaperA4
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With
Sheets("Feuil1").PrintOut Copies:=Sheets("Feuil1").Range("C15").Value, Collate:=True
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Peux-tu essayer cette macro, stp?
(je n'ai pas d'imprimante ici)
A tester directement dans un module (sans passer par l'userform)
C'est juste un test
VB:
Sub Test_Print()
With Sheets("Feuil1")
.PageSetup.PrintArea = "B5:C10": .PageSetup.PaperSize = xlPaperA4
.PageSetup.FitToPagesWide = 1: .PageSetup.FitToPagesTall = 1
.PrintOut Copies:=IIf(.Len([C15]), .[C15], 1), Collate:=True
End With
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,
Je viens de tester:
Erreur 438
Propriété ou méthode non gérée par cet objet

et la ligne
.PrintOut Copies:=IIf(.Len([C15]), .[C15], 1), Collate:=True

qui est en jaune dans le débogage.
Quant à la valeur de C15 je ne sais ce que cela veut dire d'autant que je fais un copie collé...
La valeur dans C15 est vide: juste grisée. Si j'y mets 1 c'est le même résultat...
 

Staple1600

XLDnaute Barbatruc
Re

Et comme cela, ca donne quoi
VB:
Sub Test_Print()
With Sheets("Feuil1")
.PageSetup.PrintArea = "B5:C10": .PageSetup.PaperSize = xlPaperA4
.PageSetup.FitToPagesWide = 1: .PageSetup.FitToPagesTall = 1
.PrintOut Copies:=1, Collate:=True
End With
End Sub
PS: Le nom de la feuille que tu veux imprimée est bien: Feuil ?
 

FOUQUET Yves

XLDnaute Occasionnel
GENIAL!!!!!!! YESSS!!!! MERCI
C'est exactement çà!

Bon, tu avais l'air bourru dans nos premier échanges, mais là tu me plait! lol
Peux-tu m'expliquer rapidement la signification de toutes ces lignes et commande STP.
(donne un poisson à quelqu'un il mangera un jour, apprends lui à pêcher il mangera toute sa vie)
 

FOUQUET Yves

XLDnaute Occasionnel
Encore un truc
Comment paramétrer le zoom pour que l'impression tienne sur une seule page.
Dans le test c'était le cas met dans le programme non. Pourtant j'ai fait un copie collé de la procédure.
Ou alors passer en mode image à la place de portrait
 

Staple1600

XLDnaute Barbatruc
Re

Je suis pas bourru mais adepte de la dérision/auto-dérision/ironie/humour etc
Mais peut-être que mon phrasé sur le forum est un peu bourrin ou perçu comme tel ;)
(Faut faire avec...ou pas)

Alors pour faire dans le bourru ou dans le brutal.
Je te dirais en premier lieu
ALT+F11 puis la fameuse touche magique F1

Ensuite tu permets que je passe à table pour déjeuner avant tout ? ;)

NB: Un autre moyen très formateur c'est d'utiliser l'enregistreur de macros pour comprendre le VBA.
Ne pas hésiter non plus à parcourir cette partie du forum

Bon appétit ;)


PS: Tu as toujours du mal avec les salutations, hein ? ;)
La coutume ici c'est de commencer chaque message par un petit Bonjour/Bonsoir sans oublier le Re, ;)
 

FOUQUET Yves

XLDnaute Occasionnel
Ok j'essayerai. Pour l'instant rugby.
Pour les paramètres de l'impression en fait j'ai utilisé mise en page direct d'Excellente et c'est bon. Restera à savoir la portabilité de tout ça.
Reste à régler l'envoi de mon image et je ne serai plus loin du but.

Bon appétit, bon dimanche, et encore un grand merci.
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour camarade,

1) photo
J'ai fait deux essais en envoyant à des amis le message avec photos. Ils ont des adresses gmail, et ils ont bien reçu la photo dans le corps de texte. Donc je vais faire encore des essais et je te tiens au courant.
2) autre question
J'ai une feuille Excel qui contient 150 enregistrements. C'est écriture comptables dont certaines sont pointées avec le relevé de banque et d'autres en attente du nouveau relevé.
Je fais une moulinette, avec un trie (écriture pointées ou non pointées) et j’insère dans une combobox celles qui ne sont pas pointées (une dizaine sur les 150).
Quand je veux aller sur un enregistrement de la combobox pour le modifier (passer pointé), il garde l'index de la liste du combobox et ne me renvoie pas sur la bonne ligne dans la feuille. Comment puis-je contourner "cette triste réalité" ?
Je joins le code....


VB:
Private Sub ComboBox1_Change()    'si ligne initiale combobox1 change ...
                                 ' je selectionne un compte bancaire dans la combobox 1'
nom_banq_select = ComboBox1.Text

Set Ws = Sheets("En cours") 'Avec la feuille "En cours"  dans laquelle il y toutes les écritures.
justif = "x"
non_just = 0
ligne = 1
    For j = 1 To Ws.Range("B" & Rows.Count).End(xlUp).Row
      nom_banq = Sheets("En cours").Range("B" & j)   ' cellule B = nom de la banque'
      
      If nom_banq_select = nom_banq Then        ' -- je trie sur la base des écritures non JUSTIFIEES de ce compte banque -----
                            
            justif = Sheets("En cours").Range("F" & j)
                    
            If justif = "," Then                ' la cellule est marquée "," quand elle n'est pas justifiée avec la banque
            montant = Sheets("En cours").Range("E" & j)
            non_just = non_just + montant       ' je cumule le montant des écritures pour affichage dans userform
            End If
     TextBox13.Value = Format(non_just, "currency")
     End If
    Next
 '----------------------- Affecte le solde du compte sélectionné dans textbox  "à affiner à partir d'une variable" ---------------------------------------
 With ComboBox1()
     If nom_banq_select = "CAISSE" Then
    solde = Sheets("En cours").Range("E" & 624)
    TextBox12.Value = Format(solde, "currency") '-- Solde du compte ---
    End If

    If nom_banq_select = "COMPTE COURANT CREDIT MARITIME" Then
    solde = Sheets("En cours").Range("E" & 625)
    TextBox12.Value = Format(solde, "currency") '-- Solde du compte ---
    End If
    
    If nom_banq_select = "LIVRET CREDIT MARITIME" Then
    solde = Sheets("En cours").Range("E" & 626)
    TextBox12.Value = Format(solde, "currency") '-- Solde du compte ---
    End If
    
    If nom_banq_select = "COMPTE COURANT CREDIT MUTUE" Then
    solde = Sheets("En cours").Range("E" & 627)
    TextBox12.Value = Format(solde, "currency") '-- Solde du compte ---
    End If
    
    If nom_banq_select = "LIVRET CREDIT MUTUEL" Then
    solde = Sheets("En cours").Range("E" & 628)
    TextBox12.Value = Format(solde, "currency") '-- Solde du compte ---
    End If
End With
' ------------- si je selectionne dans la liste du combobox des non justifiées, affiche infos de la ligne ----------------------------------
justif = "x"

Set Ws = Sheets("En cours")          '------  affecte les lignes non justifié à la combobox2 par le montant
With Me.ComboBox2
    For j = 8 To Ws.Range("E" & Rows.Count).End(xlUp).Row
    nom_banq = Sheets("En cours").Range("B" & j)
    If nom_banq_select = nom_banq Then
    justif = Sheets("En cours").Range("F" & j)   ' colonne F dit si justifié ou pas "," ou "X" '
        If justif = "," Then .AddItem Ws.Range("E" & j) 'colonne E colonne des montants
    End If
    If j = 569 Then Exit For   '569 ligne = maximum à traiter dans la feuille'
    Next j
End With
End Sub
'-----------------------------------------------------------
Private Sub ComboBox2_Change()

i = 0

Set Ws = Sheets("En cours")     'Attention ce nom doit correspondre au nom de votre ONGLET

If Me.ComboBox2.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox2.ListIndex + 8
TextBox17 = ligne
For i = 1 To 10
Me.Controls("TextBox" & i) = Ws.Cells(ligne, i)  ' ET C'EST LA QUE JE PERDS MON INDEX DE LA FEUILLE, normal!
Next i

End Sub
'---
'================================================================================
'Correspond au programme du bouton MODIFIER
Private Sub CommandButton2_Click()
i = 0

If MsgBox("Etes-vous certain de vouloir pointer cette écriture ?", vbYesNo, "Demande de confirmation") = vbYes Then
montant = 0
  If Me.ComboBox2.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection
        For i = 1 To 10                                       ' dix textbox à remplir...'
           If Me.Controls("TextBox" & i).Visible = True Then
           Ws.Cells(ligne, 6) = Me.Controls("TextBox" & 6)  '--- modifie colonne justif
                                                            ' ET C'EST LA QUE JE PERDS MON INDEX DE LA FEUILLE, normal!
                                                            ' et je ne modifie pas la bonne ligne dans la feuille.
           TextBox17 = ligne
           End If
        Next i
    montant = TextBox13 - Sheets("En cours").Range("E" & ligne)
    TextBox13.Value = Format(montant, "currency")
    
      TextBox12.Value = Format(solde, "currency")
  End If 'fin de la condition

End Sub


Merci de ton éclairage et bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV