Erreur d'incompatibilité 13 - Code VBA
Résolu
2015-1158
Messages postés
34
Statut
Membre
-
2015-1158 Messages postés 34 Statut Membre -
2015-1158 Messages postés 34 Statut Membre -
Bonjour,
Un problème 13 est apparu sur mon code impossible de trouver l'erreur depuis 2jours. Pourtant il avait marché je comprends pas ce qui a changé. J'ai essayé de respecter au mieux les principes de l'informatique, je n'ai pas mélanger de chaine de caractère avec des valeurs algébriques, j'ai défini chaque variable, j'ai vérifié que chaque cellule utilisée avec Range.Value contenait un nombre mais rien à faire !
Je joins en PJ l'Excel, si vous pourriez jeter un coup d'oeil pour m'aider,
https://www.transfernow.net/?utm_source=partagefichierscom&utm_medium=download
En vous remerciant,
Thomas
Un extrait du code en question:
UserForm 3 :
Private Sub CommandButton5_Click()
Unload UserForm3
If OptionButton1 = True Then
UserForm4.Show
End If
If OptionButton2 = True Then
UserForm5.Show
End If
End Sub
Private Sub CommandButtonUF32_Click()
Unload Me
Range("C17").ClearContents
End Sub
UserForm2:
Sub TextBox7_Change()
If Not IsNumeric(TextBox7) And Not TextBox7.Text = "" Then
MsgBox ("pas numeric")
TextBox7.Text = Mid(TextBox7.Text, 1, Len(TextBox7.Text) - 1)
End If
CalculMoy2
End Sub
Sub TextBox8_Change()
If Not IsNumeric(TextBox8) And Not TextBox8.Text = "" Then
MsgBox ("Not a numeric value")
TextBox8.Text = Mid(TextBox8.Text, 1, Len(TextBox8.Text) - 1)
End If
CalculMoy2
End Sub
Sub CalculMoy2()
Me.TextBox9.Value = (Val(Replace(Me.TextBox7, ",", ".")) + Val(Replace(Me.TextBox8, ",", "."))) / 2
End Sub
Private Sub TextBox9_Change()
Range("C11") = TextBox9.Value
End Sub
Private Sub CommandButton3_Click()
Unload UserForm2
Range("C13").Value = Range("C11").Value / (24 * Range("M2").Value)
rslt1 = Range("C10").Value - Range("C13").Value * Range("M2").Value * 24 * (Range("C8").Value / 100)
rslt2 = Range("M2").Value * (24 - 24 * (Range("C8").Value / 100))
Range("C12").Value = (rslt1) / (rslt2)
End Sub
Private Sub CommandButton4_Click()
Unload Me
Range("C11").ClearContents
End Sub
Un problème 13 est apparu sur mon code impossible de trouver l'erreur depuis 2jours. Pourtant il avait marché je comprends pas ce qui a changé. J'ai essayé de respecter au mieux les principes de l'informatique, je n'ai pas mélanger de chaine de caractère avec des valeurs algébriques, j'ai défini chaque variable, j'ai vérifié que chaque cellule utilisée avec Range.Value contenait un nombre mais rien à faire !
Je joins en PJ l'Excel, si vous pourriez jeter un coup d'oeil pour m'aider,
https://www.transfernow.net/?utm_source=partagefichierscom&utm_medium=download
En vous remerciant,
Thomas
Un extrait du code en question:
UserForm 3 :
Private Sub CommandButton5_Click()
Unload UserForm3
If OptionButton1 = True Then
UserForm4.Show
End If
If OptionButton2 = True Then
UserForm5.Show
End If
End Sub
Private Sub CommandButtonUF32_Click()
Unload Me
Range("C17").ClearContents
End Sub
UserForm2:
Sub TextBox7_Change()
If Not IsNumeric(TextBox7) And Not TextBox7.Text = "" Then
MsgBox ("pas numeric")
TextBox7.Text = Mid(TextBox7.Text, 1, Len(TextBox7.Text) - 1)
End If
CalculMoy2
End Sub
Sub TextBox8_Change()
If Not IsNumeric(TextBox8) And Not TextBox8.Text = "" Then
MsgBox ("Not a numeric value")
TextBox8.Text = Mid(TextBox8.Text, 1, Len(TextBox8.Text) - 1)
End If
CalculMoy2
End Sub
Sub CalculMoy2()
Me.TextBox9.Value = (Val(Replace(Me.TextBox7, ",", ".")) + Val(Replace(Me.TextBox8, ",", "."))) / 2
End Sub
Private Sub TextBox9_Change()
Range("C11") = TextBox9.Value
End Sub
Private Sub CommandButton3_Click()
Unload UserForm2
Range("C13").Value = Range("C11").Value / (24 * Range("M2").Value)
rslt1 = Range("C10").Value - Range("C13").Value * Range("M2").Value * 24 * (Range("C8").Value / 100)
rslt2 = Range("M2").Value * (24 - 24 * (Range("C8").Value / 100))
Range("C12").Value = (rslt1) / (rslt2)
End Sub
Private Sub CommandButton4_Click()
Unload Me
Range("C11").ClearContents
End Sub
A voir également:
- Erreur d'incompatibilité 13 - Code VBA
- Code ascii - Guide
- Code puk bloqué - Guide
- Fifa 13 - Télécharger - Jeux vidéo
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
2 réponses
Bonjour,
Voici le fichier sans mot de passe, je viens de réparer l'erreur, c'était au niveau du complétement entre les TextBox et le lien entre certaines cellule, j'écrivais: TextBox1.Text=Range("C10").Value, il suffisait de supprimer le Value, tout s'est emboiter. Je le poste tout de même si certains ont des remarques ou des améliorations à apporter, je suis débutant en VBA. En vous remerciant,
https://www.transfernow.net/?utm_source=partagefichierscom&utm_medium=download
Voici le fichier sans mot de passe, je viens de réparer l'erreur, c'était au niveau du complétement entre les TextBox et le lien entre certaines cellule, j'écrivais: TextBox1.Text=Range("C10").Value, il suffisait de supprimer le Value, tout s'est emboiter. Je le poste tout de même si certains ont des remarques ou des améliorations à apporter, je suis débutant en VBA. En vous remerciant,
https://www.transfernow.net/?utm_source=partagefichierscom&utm_medium=download
Sur la cellule C10 ou C11, un UF1 (calcul de la moyenne N°1) apparait, essayes une première fois avec une liste de nombre tel que la moyenne N°1 soit inférieur à celle du 2nd UF2 (calcul de la moyenne N°2 sur weekend). Bref essayes deux possibilités, un coup lorsque la moy1 est supérieur à la moy2 et un autre coup l'inverse. Logiquement l'erreur 13 devrait apparaitre.
Merci
Merci
Bon peut-être que ca bug plus en fait, je suis désolé.
Cependant j'ai tout de même une question technique. Comme tu peux le voir j'ai réaliser des macros sur la colonne C, j'aimerai pouvoir appliquer ces mêmes macros sur les colonnes qui suivent.
A la base pour enclencher mes macros j'ai mis ceci dans la feuille principale:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$10" Then UserForm1.Show
If Target.Address = "$C$11" Then UserForm1.Show
If Target.Address = "$C$17" Then UserForm3.Show
End Sub
J'ai essayé de le modifier pour créer une boucle afin de balayer une ligne:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
i=1
While i=<3
If Target.Address = Cells(10,i) Then UserForm1.Show
If Target.Address = Cells(11,i) Then UserForm1.Show
If Target.Address = Cells(17,i) Then UserForm3.Show
i=i+1
Wend
End Sub
Mais evidemment ca ne marche pas. Il faudra ensuite que je code l'intérieur des macros avec des boucles car en fonction de la cellule choisir on se place sur une lettre de colonne pour amorcer les macros. A reflechir
Cependant j'ai tout de même une question technique. Comme tu peux le voir j'ai réaliser des macros sur la colonne C, j'aimerai pouvoir appliquer ces mêmes macros sur les colonnes qui suivent.
A la base pour enclencher mes macros j'ai mis ceci dans la feuille principale:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$10" Then UserForm1.Show
If Target.Address = "$C$11" Then UserForm1.Show
If Target.Address = "$C$17" Then UserForm3.Show
End Sub
J'ai essayé de le modifier pour créer une boucle afin de balayer une ligne:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
i=1
While i=<3
If Target.Address = Cells(10,i) Then UserForm1.Show
If Target.Address = Cells(11,i) Then UserForm1.Show
If Target.Address = Cells(17,i) Then UserForm3.Show
i=i+1
Wend
End Sub
Mais evidemment ca ne marche pas. Il faudra ensuite que je code l'intérieur des macros avec des boucles car en fonction de la cellule choisir on se place sur une lettre de colonne pour amorcer les macros. A reflechir