Erreur 400

naitgo Messages postés 5 Statut Membre -  
jean-yvon Messages postés 112 Statut Membre -
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.
 
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

3 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
lol ... tu as la réponse dans ta boite e-mail ...

;o)

Polux
2
question
 
c koi un messaj derreur 400 ?

je sui pa calée en informatik alor pourriez vous maider ???

MERCI COMMENT CA MARCHE
0
jean-yvon Messages postés 112 Statut Membre 10
 
salut
Voici le texte de l'erreur 400 ""ATTENTION C 'EST DU VB""
Erreur définie par l'application ou par l'objet

et ça c'est l'aide
Ce message s'affiche lorsqu'une erreur générée par la méthode Raise ou l'instruction Error ne correspond pas à une erreur définie par Visual Basic pour Applications. Elle est également renvoyée par la fonction Error pour lesarguments qui ne correspondent pas à des erreurs définies par Visual Basic pour Applications. Il peut donc s'agir d'une erreur que vous avez définie ou d'une erreur définie par un objet, y compris lesapplications hôtes, telles que Microsoft Excel, Visual Basic, etc. Les feuilles Visual Basic, par exemple, génèrent des erreurs liées aux feuilles qui ne peuvent pas être générées à partir du code en spécifiant simplement un nombre comme argument de la méthode Raise ou de l'instruction Error. Causes et solutions de ce message :

Votre application a exécuté une instruction Err.Raise n ou Error n, mais le nombre n n'est pas défini par Visual Basic pour Applications.
Si c'est votre intention, vous devez utiliser l'instruction Err.Raise et spécifier des arguments supplémentaires de sorte qu'un utilisateur final puisse comprendre la nature de l'erreur. Vous pouvez, par exemple, inclure une chaîne explicative, la source et des informations d'aide. Pour regénérer une erreur que vous avez récupérée, cette approche n'aboutira que si vous n'exécutez pas Err.Clear avant de regénérer l'erreur. Si vous exécutez d'abord l'instruction Err.Clear, vous devez compléter les arguments supplémentaires de la méthode Raise. Examinez le contexte dans lequel l'erreur s'est produite et assurez-vous que vous regénérez la même erreur.

Il se peut que lors de l'accès à des objets provenant d'autres applications, une erreur se soit propagée jusqu'à votre programme et qu'elle ne corresponde à aucune erreur Visual Basic.
Vérifiez la documentation des objets auxquels vous avez accédés. La propriété Source de l'objet Err doit contenir le nom de classe de l'application ou de l'objet qui a généré l'erreur. Pour comprendre le contexte d'une erreur renvoyée par un objet, vous pouvez insérer l'instruction On Error Resume Next dans le code d'accès aux objets plutôt que la syntaxe On Error GoTo ligne.

Note Par le passé, les programmeurs ont souvent recouru à une boucle pour obtenir la liste des chaînes de message de toutes les erreurs récupérables. Ce code se présentait généralement de la manière suivante :

For index = 1 to 500
Debug.Print Error$(index)
Next index

Un tel code fournit toujours la liste de tous les messages d'erreur Visual Basic pour Applications, mais affiche "Erreur définie par l'application ou par l'objet" pour les erreurs définies par l'hôte, notamment les erreurs qui dans Visual Basic ont trait aux feuilles, aux contrôles, etc. Il s'agit souvent d'erreurs d'exécution récupérables. Pour rechercher la liste des erreurs récupérables propres à votre application hôte, utilisez la boîte de dialogue Rechercher de l'aide. Cliquez sur Rechercher, tapez Récupérable dans la première zone de texte. Cliquez sur Erreurs récupérables dans la zone de liste inférieure, puis sur Afficher.
0