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

pb vba

zumye

XLDnaute Occasionnel
bonjour le forum

je n'arrive pas a faire fonctionner ce vba qui me permet d'imprimer a partir d'une colonne (comportant tout les noms des onglets) sur un double clic d'imprimer la page choisis.

j'ai dans un module :

Sub imprime(nom)
Dim L As Integer, i As Integer
L = Range("A65536").End(xlUp).Row 'déjà dans la feuille "Recap"
For i = 3 To L
If nom = "" Then Exit Sub
If nom = Range("A" & i) Then
Sheets(nom).Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
MsgBox " Cette feuille est en impression" 'point d'arrêt pour contrôle, pas envie d'imprimer
Sheets("Recap").Activate
Exit For
End If
Next
End Sub


et sur ma page ou se situe ma fameuse colonne a :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = False
nom = Target
imprime (nom) 'pour porter la variable
End Sub


mon probleme est quand je double clic sur un nom situé dans la colonne a j'ai la ligne "If nom = Range("A" & i) Then" qui est surligné en jaune"

d'ou vient l'erreur?

merci
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : pb vba

Bonsoir,
pour préserver la valeur de "nom", il faut que tu déclares ta variable en Public dans le module. Essaie avec :

Code:
Public nom
Sub imprime(nom)
'.......
End Sub
 

zumye

XLDnaute Occasionnel
Re : pb vba

ca ne marche tjs pas et en plus j'ai oublié de mettre le debut dans mon module j'ai :
Option Explicit
Public nom As String 'Public pour garder la valeur partout
Sub imprime(nom)
Dim L As Integer, i As Integer
L = Range("A65536").End(xlUp).Row 'déjà dans la feuille "Recap"
For i = 3 To L
If nom = "" Then Exit Sub
If nom = Range("A" & i) Then
Sheets(nom).Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
MsgBox " Cette feuille est en impression" 'point d'arrêt pour contrôle, pas envie d'imprimer
Sheets("Recap").Activate
Exit For
End If
Next
End Sub
 

Dan

XLDnaute Barbatruc
Re : pb vba

Bonjour,

A première vue, je ne vois pas le pourquoi du EXIT FOR
Par contre il me semble qu'il te manque un END IF à la place.

BhBh, le NOM vient d'une private qui est la valeur TARGET. Il me semble qu'il faudrait plutôt faire ceci --> Sub imprime(nom as string)

A vous lire

Dan
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : pb vba

Re-
essaie avec ceci :

dans l'évènement de feuille :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [A1:A3]) Is Nothing And Target <> "" Then
    laFeuille = Target
    Call imprime
    Cancel = True
End If
End Sub

et dans un module :

Code:
Public laFeuille As String
Sub imprime()
Sheets(laFeuille).PrintPreview  'ou PrintOut
End Sub
 

zumye

XLDnaute Occasionnel
Re : pb vba

je dois mal m'y prendre car il n'y aucune reaction
ma feuille ou se trouve le double clic s'appelle Recap
j'ai installé les VBA et remplacé le mot lafeuille par Recap
Recap = Target
Recap = Target
Sheets(Recap).PrintPreview

ou se trouve mon erreur?

merci
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : pb vba

Re-,
ce n'était pas la peine de renommer la variable...
L'as-tu également modifié dans la variable?

regarde l'exemple :
 

Pièces jointes

  • zumye.zip
    7.9 KB · Affichages: 19
  • zumye.zip
    7.9 KB · Affichages: 19
  • zumye.zip
    7.9 KB · Affichages: 21

Discussions similaires

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