[VBA] erreur de dépassement
Fermé
Grace
-
11 juil. 2008 à 11:03
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 11 juil. 2008 à 13:58
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 11 juil. 2008 à 13:58
A voir également:
- [VBA] erreur de dépassement
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur vidéo freebox ✓ - Forum TV & Vidéo
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 38 free ✓ - Forum Mobile
4 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
11 juil. 2008 à 11:16
11 juil. 2008 à 11:16
Bonjour,
essaie avec Dim k As long
eric
essaie avec Dim k As long
eric
zavenger
Messages postés
811
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
161
11 juil. 2008 à 11:18
11 juil. 2008 à 11:18
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
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
>
Grace
11 juil. 2008 à 11:32
11 juil. 2008 à 11:32
alors il faut faire un exit sub quand il est trouvé, sinon la boucle continue ...
...
TextBox16.Value = Sheets("Registre").Cell(k, 10)
Exit Sub
End If
;o)
...
TextBox16.Value = Sheets("Registre").Cell(k, 10)
Exit Sub
End If
;o)
zavenger
Messages postés
811
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
161
>
Grace
11 juil. 2008 à 11:33
11 juil. 2008 à 11:33
je sais que c'est moins propre, mais je ne declarerais pas k
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
>
zavenger
Messages postés
811
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
11 juil. 2008 à 11:35
11 juil. 2008 à 11:35
En tout cas pas en integer ... mais en long
;o)
;o)
zavenger
Messages postés
811
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
161
>
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
11 juil. 2008 à 11:35
11 juil. 2008 à 11:35
pas d'accord car While Cells(k, 1) <> TextBox7 est faux (puisque valeur trouvée) donc sort de la boucle ;-)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
11 juil. 2008 à 11:19
11 juil. 2008 à 11:19
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)
zavenger
Messages postés
811
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
161
11 juil. 2008 à 11:21
11 juil. 2008 à 11:21
effectivement, la valeur doit etre trouvée sinon ... la macro sort en erreur
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
11 juil. 2008 à 13:58
11 juil. 2008 à 13:58
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.
11 juil. 2008 à 11:22
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
11 juil. 2008 à 11:25
TextBox7 = eti
;o)