Problème VBA opérateur de comparaison

issamj

XLDnaute Nouveau
Bonjour tout le monde. Avant de me mettre à décrire mon problème en VBA, je remercie tout ceux qui portent de l'aide en programmation pour moi et pour tous ceux qui ont en besoin.
J'ai fait un programme qui permet prendre des données, les saisie dans une case appropriée puis imprime la page. C'est toujours une seule page à imprimer. Cela fonctionne très bien. Mais pour améliorer l'utilisation, j'ai introduit deux variables pour choisir à partir de quel donnée imprimer et jusqu'à quel donnée utilisant INPUTBOX. J'ai du mettre des conditions sur les valeurs à introduire mais cela m'a ébloui, une fois ça passe et d'autres non, ce qui est étrange en VBA! Une personne peut trouver l'erreur ?

Voici mon programme :

Sub contrat()
Dim employe(1 To 1000, 0 To 17) As String
Dim i, j, n, c, e As Integer
Dim deb, fin, l As Byte

Sheets("data").Select
Range("C3").Select

n = 0
Do While Selection.Offset(n, 0) <> ""
n = n + 1
Loop

For i = 1 To n
For j = 0 To 17
employe(i, j) = Selection.Offset(i - 1, j - 1)
Next
Next

l = n

Do
deb = InputBox("Num debut : ")
Loop Until (deb <= l) = True

Do
fin = InputBox("num fin : ")
Loop Until (deb <= fin <= l) = True



For i = deb To fin

If MsgBox("Etes-vous sûr d'imprimer le contrat de " & employe(i, 2) & " ?", vbExclamation + vbOKCancel, "Contrat") = vbOK Then

Sheets("premier CDD MOD").Activate
Range("C12") = employe(i, 1)
Range("C22") = employe(i, 1)
Range("C34") = employe(i, 1)
Range("D107") = employe(i, 1)
Range("N12") = employe(i, 2)
Range("N107") = employe(i, 2)

Sheets("premier CDD MOD").PrintOut
End if
End sub
 

kjin

XLDnaute Barbatruc
Re : Problème VBA opérateur de comparaison

Bonjour,
Code:
Sub zzzzzzzz()
Dim rng As Range, j%, i%, x%
On Error Resume Next
Set rng = Application.InputBox _
    (prompt:="Sélectionner une plage ou une ligne" & vbLf & _
    "(ou plusieurs non contigües en appuyant sur la touche ctrl)", Type:=8)
If rng Is Nothing Then Exit Sub
On Error GoTo 0
With Feuil2
    .Range("A2:C5000").ClearContents
    For j = 1 To rng.Areas.Count
        For i = 1 To rng.Areas(j).Rows.Count
            x = x + 1
            .Range("A" & x + 1 & ":C" & x + 1) = rng.Areas(j).Rows(i).Resize(1, 3).Cells.Value
        Next
    Next
    .PrintPreview
End With
End Sub
Les lignes ou les plages sont sélectionnées directement dans la feuille
Appuyer sur crtl pour sélectionner des lignes ou plages non contigües
Voir PJ exemple à adapter
A+
kjin
 

Pièces jointes

  • issamj.xls
    30 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren