[VBA] erreur de dépassement
Grace
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
J'ai créer un formulaire qui puisse me permettre de récupérer des données d'un classeur Excel, suite à la saisie d'un numéro dans la textbox7.
J'ai créer mon programme mais quand je l'exécute il m'affiche une erreur "dépassement de capacité". Je ne comprends pas mon erreur.
Le programme est le suivant :
Private Sub recap_Click()
Dim k As Integer
k = 4
If TextBox7.Value <> "" Then
k = 4
Do While Cells(k, 1) <> TextBox7
If Cells(k, 1) = TextBox7 Then
Worksheets("registre").Select
Worksheets("registre").Rows(k).Select
TextBox8.Value = Sheets("Registre").Cell(k, 2)
TextBox9.Value = Sheets("Registre").Cell(k, 3)
TextBox10.Value = Sheets("Registre").Cell(k, 4)
TextBox11.Value = Sheets("Registre").Cell(k, 5)
TextBox12.Value = Sheets("Registre").Cell(k, 6)
TextBox13.Value = Sheets("Registre").Cell(k, 11)
TextBox14.Value = Sheets("Registre").Cell(k, 12)
TextBox15.Value = Sheets("Registre").Cell(k, 9)
TextBox16.Value = Sheets("Registre").Cell(k, 10)
Worksheets("registre").Select
End If
k = k + 1
Loop
End If
End Sub
La partie en gras c'est l'endroit ou il m'indique qu'il y a une erreur (quand je clique sur débogage)
je vous remercie par avance si vous pouvez m'aider.
Bonne journée à vous
Grace
J'ai créer un formulaire qui puisse me permettre de récupérer des données d'un classeur Excel, suite à la saisie d'un numéro dans la textbox7.
J'ai créer mon programme mais quand je l'exécute il m'affiche une erreur "dépassement de capacité". Je ne comprends pas mon erreur.
Le programme est le suivant :
Private Sub recap_Click()
Dim k As Integer
k = 4
If TextBox7.Value <> "" Then
k = 4
Do While Cells(k, 1) <> TextBox7
If Cells(k, 1) = TextBox7 Then
Worksheets("registre").Select
Worksheets("registre").Rows(k).Select
TextBox8.Value = Sheets("Registre").Cell(k, 2)
TextBox9.Value = Sheets("Registre").Cell(k, 3)
TextBox10.Value = Sheets("Registre").Cell(k, 4)
TextBox11.Value = Sheets("Registre").Cell(k, 5)
TextBox12.Value = Sheets("Registre").Cell(k, 6)
TextBox13.Value = Sheets("Registre").Cell(k, 11)
TextBox14.Value = Sheets("Registre").Cell(k, 12)
TextBox15.Value = Sheets("Registre").Cell(k, 9)
TextBox16.Value = Sheets("Registre").Cell(k, 10)
Worksheets("registre").Select
End If
k = k + 1
Loop
End If
End Sub
La partie en gras c'est l'endroit ou il m'indique qu'il y a une erreur (quand je clique sur débogage)
je vous remercie par avance si vous pouvez m'aider.
Bonne journée à vous
Grace
A voir également:
- [VBA] erreur de dépassement
- Le logiciel amd a détecté un dépassement de délai du pilote ✓ - Forum Carte graphique
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Dépassement de délai du pilote AMD, rx 7900 xtx - Forum Carte graphique
- Erreur 0x80070643 - Accueil - Windows
4 réponses
Bonjour,
déjà je simplifierais un peu le code (sans garantie que cela solutionne le pb)
Private Sub recap_Click()
Dim k As Integer
k = 4
If TextBox7.Value <> "" Then
k = 3
Do
k = k + 1
If Cells(k, 1) = TextBox7 Then
TextBox8.Value = Sheets("Registre").Cell(k, 2)
TextBox9.Value = Sheets("Registre").Cell(k, 3)
TextBox10.Value = Sheets("Registre").Cell(k, 4)
TextBox11.Value = Sheets("Registre").Cell(k, 5)
TextBox12.Value = Sheets("Registre").Cell(k, 6)
TextBox13.Value = Sheets("Registre").Cell(k, 11)
TextBox14.Value = Sheets("Registre").Cell(k, 12)
TextBox15.Value = Sheets("Registre").Cell(k, 9)
TextBox16.Value = Sheets("Registre").Cell(k, 10)
End If
Loop While Cells(k, 1) <> TextBox7
End If
End Sub
déjà je simplifierais un peu le code (sans garantie que cela solutionne le pb)
Private Sub recap_Click()
Dim k As Integer
k = 4
If TextBox7.Value <> "" Then
k = 3
Do
k = k + 1
If Cells(k, 1) = TextBox7 Then
TextBox8.Value = Sheets("Registre").Cell(k, 2)
TextBox9.Value = Sheets("Registre").Cell(k, 3)
TextBox10.Value = Sheets("Registre").Cell(k, 4)
TextBox11.Value = Sheets("Registre").Cell(k, 5)
TextBox12.Value = Sheets("Registre").Cell(k, 6)
TextBox13.Value = Sheets("Registre").Cell(k, 11)
TextBox14.Value = Sheets("Registre").Cell(k, 12)
TextBox15.Value = Sheets("Registre").Cell(k, 9)
TextBox16.Value = Sheets("Registre").Cell(k, 10)
End If
Loop While Cells(k, 1) <> TextBox7
End If
End Sub
Bonjour,
Je ne comprends pas pourquoi ça :
Worksheets("registre").Select
Worksheets("registre").Rows(k).Select
....
TextBox8.Value = Sheets("Registre").Cell(k, 2)
Worksheets("registre").Select
Ensuite pour le dépassement de capacité, tu parcours toutes les cellules différentes de la valeur contenue dans le textbox7. C'est à dire que tu testes même les cellules vides de la colonne jusqu'à la 65536 ème cellule. Si tu déclares k en type long, quand tu arrives à k= 65536 + 1, tu es en dépacement de capacité de la feuille Excel. Si k est de type entier (integer) tu es en dépassement à 32768 ...
;o)
Je ne comprends pas pourquoi ça :
Worksheets("registre").Select
Worksheets("registre").Rows(k).Select
....
TextBox8.Value = Sheets("Registre").Cell(k, 2)
Worksheets("registre").Select
Ensuite pour le dépassement de capacité, tu parcours toutes les cellules différentes de la valeur contenue dans le textbox7. C'est à dire que tu testes même les cellules vides de la colonne jusqu'à la 65536 ème cellule. Si tu déclares k en type long, quand tu arrives à k= 65536 + 1, tu es en dépacement de capacité de la feuille Excel. Si k est de type entier (integer) tu es en dépassement à 32768 ...
;o)
Bonjour le fil...
quand la valeur est trouvée.... Sort de la boucle et ne fait jamais le transfert.
Sheets("Registre").Cells(k, 2)... il faut un S à Cell >> cells(x,y)
Ta macro testée.
A+
EDIT: j'avais pas lu tout les postes...d'où certaine remarques qui n'ont plus lieu.
quand la valeur est trouvée.... Sort de la boucle et ne fait jamais le transfert.
Sheets("Registre").Cells(k, 2)... il faut un S à Cell >> cells(x,y)
Ta macro testée.
Private Sub recap_Click()
Dim eti As Long
Dim k As Long
If TextBox7.Value = "" Then Exit Sub
eti = TextBox7.Value
With Sheets("Registre")
For k = 1 To .Range("A1").SpecialCells(xlCellTypeLastCell).Row
If .Cells(k, 1) = eti Then
TextBox8.Value = .Cells(k, 2)
TextBox9.Value = .Cells(k, 3)
TextBox10.Value = .Cells(k, 4)
TextBox11.Value = .Cells(k, 5)
TextBox12.Value = .Cells(k, 6)
TextBox13.Value = .Cells(k, 11)
TextBox14.Value = .Cells(k, 12)
TextBox15.Value = .Cells(k, 9)
TextBox16.Value = .Cells(k, 10)
Exit Sub
End If
Next k
End With
End Sub
A+
EDIT: j'avais pas lu tout les postes...d'où certaine remarques qui n'ont plus lieu.
Private Sub recap_Click()
TextBox7 = eti
Worksheets("registre").Select
Dim k As Long
k = 4
If TextBox7.Value <> "" Then
k = 4
Do While Cells(k, 1) <> eti
If Cells(k, 1) = eti Then
Worksheets("registre").Select
Worksheets("registre").Rows(k).Select
TextBox8.Value = Sheets("Registre").Cell(k, 2)
TextBox9.Value = Sheets("Registre").Cell(k, 3)
TextBox10.Value = Sheets("Registre").Cell(k, 4)
TextBox11.Value = Sheets("Registre").Cell(k, 5)
TextBox12.Value = Sheets("Registre").Cell(k, 6)
TextBox13.Value = Sheets("Registre").Cell(k, 11)
TextBox14.Value = Sheets("Registre").Cell(k, 12)
TextBox15.Value = Sheets("Registre").Cell(k, 9)
TextBox16.Value = Sheets("Registre").Cell(k, 10)
Worksheets("registre").Select
End If
k = k + 1
Loop
End If
End Sub
Maintenant quand je clique sur "récap" il me supprime ce que j'ai saisie dans textBox7!!!! Je ne comprend pas!
Merci d'avance
TextBox7 = eti
;o)