Bonjour,
J'ai un code qui génère une numérotation et qui place les numéros dans des cellules qui contiennent les mots : n1 et n2.
Lorsque je veux lancer l'impression j'ai l'erreur 400 qui s'affiche et qui me dit "feuille déjà affichée ; affichage modal impossible"
Avant que j'utilise le code recherche et remplace, le code fonctionnait très bien en mettant la référence des cellules qui doivent recevoir les n° après la boucle For (Range("b5").value=p) par exemple.
N'étant pas très calé en VB je n'arrive pas à résoudre ce problème, je vois bien que c'est un problème d'ouverture et fermeture de feuille ou de UserForm mais je ne vois pas ce que je doit corriger.
Est-ce que quelqu'un peut m'aider ?
Merci beaucoup.
Voici le code du UserForm
J'ai un code qui génère une numérotation et qui place les numéros dans des cellules qui contiennent les mots : n1 et n2.
Lorsque je veux lancer l'impression j'ai l'erreur 400 qui s'affiche et qui me dit "feuille déjà affichée ; affichage modal impossible"
Avant que j'utilise le code recherche et remplace, le code fonctionnait très bien en mettant la référence des cellules qui doivent recevoir les n° après la boucle For (Range("b5").value=p) par exemple.
N'étant pas très calé en VB je n'arrive pas à résoudre ce problème, je vois bien que c'est un problème d'ouverture et fermeture de feuille ou de UserForm mais je ne vois pas ce que je doit corriger.
Est-ce que quelqu'un peut m'aider ?
Merci beaucoup.
Voici le code du UserForm
Code:
Private Sub CommandButton1_Click()
'déclaration des variables
Dim PageDe As Single, PageA As Single, p As Single
Dim sPas As Single, sBorneMin As Single, sBorneMax As Single
Dim numA As String, numB As String
'identification des chiffres contenu dans TextBox 1 et 2
If TextBox1.Value <> "" And TextBox2.Value <> "" Then
PageDe = TextBox2
PageA = TextBox1 / 2
'définition du sens de numérotation (montant ou descendant)
If CheckBox1.Value = True Then
sBorneMin = PageDe
sBorneMax = PageA + TextBox2 - 1
sPas = 1
Else
sBorneMin = PageA + TextBox2 - 1
sBorneMax = PageDe
sPas = -1
End If
'boucle qui génère les numéros dans les cellules concernées
For p = sBorneMin To sBorneMax Step sPas
'insertion de p dans une variable
numA = p
numB = p + 1 * PageA
'recherche les cellules contenant n1, n2 etc... et remplace leur contenu par une variable
Cells.Replace What:="n1", Replacement:=numA, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="n2", Replacement:=numB, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Worksheets("Feuil4").PrintOut
Next p
'remise à zéro de la cellule servant au démarrage du code
Range("D13").Value = 0
End If ' If TextBox1.Value <> "" And TextBox2.Value <> "" Then
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value <> vbNullString Then
If CLng(TextBox1.Value) Mod 2 <> 0 Then
MsgBox "Veuillez saisir un multiple de 2", vbCritical + vbOKOnly, "Attention..."
Cancel = True
TextBox1.Value = ""
TextBox1.SetFocus
End If
End If
End Sub
Private Sub TextBox1_Change()
Label4.Caption = 0
If TextBox1.Value <> "" Then Label4.Caption = Label4.Caption + CLng(TextBox1.Value)
If TextBox2.Value <> "" Then Label4.Caption = Label4.Caption + CLng(TextBox2.Value)
Label6.Caption = 0
If TextBox1.Value <> "" Then Label6.Caption = CDbl(TextBox1 / 2)
End Sub
Private Sub TextBox2_Change()
Label4.Caption = -1
If TextBox1.Value <> "" Then Label4.Caption = Label4.Caption + CLng(TextBox1.Value)
If TextBox2.Value <> "" Then Label4.Caption = Label4.Caption + CLng(TextBox2.Value)
End Sub