[VBA] erreur de dépassement
Grace
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
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
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Le logiciel amd a détecté un dépassement de délai du pilote - Forum Processeur
- Le logiciel amd a détecté un dépassement de délai du pilote ✓ - Forum Carte graphique
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
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)