Hola Tof. Bleck le retour

  • Initiateur de la discussion bleck
  • Date de début
B

bleck

Guest
Rien de grave. Simplement que je recois quelquefois le message: Il s'est produit l'erreur "6" en temps d'execution: Debordement.

Enfin je te le traduis literralement, puisque je recois le message en Espagnol.

Apparament cela n'a aucune incidence sur le bon deroulement du procesus, mais je prefere toutefois te demander ton avis, et savoir si je dois continuer a appuyer sur fermer quand le message apparait.

Bon week-end
 
Z

zon

Guest
Bonsoir à tous ,


Christophe et Bleck l'erreur d'éxecution 6 est un dépassement de capacité:


Ex: si K est déclaré en Byte, il reçoit la valeur 257 =>dépassement car un Byte ne peut pas dépasser 255.

Cela peut arriver, je pense (K as Byte) quand on écrit K=Range("A65536").en(Xlup).row où la dernière ligne est 256 ou plus, il suffit de mettre K en integer ou en Long.....



A+++
 
@

@+Thierry

Guest
Bonjour Bleck, @Xtoph, Zon et le Forum.

Bon alors ça c'est l'exemple du fil à ne pas faire...

Mister Bleck "Hola" :)
Et Oh là là aussi :-(
Si tu lis un tant soit peu la Charte de ce forum tu verrais que tu nous fais un sbinz ici.
Si j'ai rédigé l'article 2 §2 c'est justement pour éviter ce genre de fil...

Car ce matin, j'ai été obligé de me faire des recherches depuis le 30 avril pour essayer de comprendre quel problème tu avais... C'est franchement pas cool... et c'est vraiment parceque j'ai lu que mon ami @Xtof@ me demandait ici, sinon je n'aurai pas perdu de temps sur ce fil.

Pour le Problème de Dépassement, je pense que Zon à raiZon !! (héhéhé).

En fait je n'ai pas ouvert les multiples exemples de Xtof, mais en regardant le dernier en date "Exemple7.xls" du post de @Xtof@ du 07-05-03 09:32 Lien supprimé je me rends compte de deux choses :

1) Le Module1 est vraiment très inspiré du code que j'ai écrit pour la démo pour DJ-Run Fil numéro 28900 :)

2) Dans le Module2 @Xtoph@ nous a fait un petit mixte crapuleux des déclaration de variables !!!

En effet le module2 avec mes commentaires :

=============================================================
Option Explicit
Dim WS As Worksheet
Dim rep As String '<<<< NON NON NON : vbYes = 6 ET vbNo = 7 donc BYTE SUFFIT

Sub Debut()
rep = MsgBox("Voulez vous supprimer les valeur d'origine de la feuille inicial?", vbYesNo)
If rep = vbYes Then '<<<< ON PEUT ECRIRE If rep = 6 Then

'pour ici vu le résultat d'un clear total.........
Range("A65536").End(xlUp).End(xlToRight).Select
Range(Selection, Cells(1)).ClearContents
'>>>>>>>>>>>>>>>>>> Cells.clear ' Suffit amplement !!! lol
End If

For Each WS In Worksheets
If WS.Name <> "Inicial" Then
WS.Range("A2:K" & WS.Range("A65536").End(xlUp).Row).Copy _
Destination:=Worksheets("Inicial").Range("A" & _
Range("A65536").End(xlUp).Row + 1)
End If
Next WS
Clean
End Sub

Sub Clean()
Dim WS As Worksheet
Dim L As Byte '<<<<< NON NON NON As Long ou éventuellement As Integer !!!!!!!!!

'PUIS J'ARRETE LA CORRECTION ICI.........
'CAR APRES REFLEXION CETTE MACRO N'A PAS LIEU D'EXISTER !!! LoL !!!

L = Range("I65536").End(xlUp).Row
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each WS In ActiveWorkbook.Worksheets
If WS.Name = "Inicial" Then
Else: WS.Columns("A:I").ClearContents
End If
Next WS
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

=============================================================

Et maintenant ma version du module2 :

=============================================================
Option Explicit

Sub Debut()
Dim WS As Worksheet
Dim rep As Byte
Dim Test As String

rep = MsgBox("Voulez vous supprimer les valeur d'origine de la feuille inicial?", vbYesNo)
If rep = 6 Then

'ICI J'AI AJOUTE UN TEST QUE JE PENSE TRES UTILE !! HOLA !!!
Test = Sheets("Inicial").Range("B2") & " " & Sheets("Inicial").Range("F2")
If IsEmpty(Sheets(Test).Range("A2")) Then
MsgBox "Le report sur les feuilles n'a pas été fait au préalable.... Danger !!!" & _
vbCrLf & "Vous ne pouvez lancer ce code sous risque de perdre toute vos données", vbCritical, "WARNING"
Exit Sub
End If

Cells.Clear
End If

For Each WS In Worksheets
If WS.Name <> "Inicial" Then
WS.Range("A2:I" & WS.Range("A65536").End(xlUp).Row).Copy _
Destination:=Worksheets("Inicial").Range("A" & _
Range("A65536").End(xlUp).Row + 1)
WS.Columns("A:I").ClearContents
End If
Next WS
End Sub

=============================================================

Voilà j'ai profité de la réduction des instruction pour y ajouter un ptit test qui me semble bien utile....

Voilà Mister Bleck, tu ne devrais plus avoir de message, même en Espagnol !! lol (Enfin j'espère !)

Bon Dimanche à vous tous et à ceux/celles qui passeront par ce fil.
@+Thierry
 
B

bleck

Guest
Avant toutes choses je tiens a presenter mes plus plates excuses aux createurs ainsi qu'à tous les utilisateurs de ce forum, pour avoir enfreint l'un des passages du paragraphe 2 de la charte regissant le mode d'utilisation du dit forum. A la verite, si je me suis adréssé a Tof, c'est parcequ'il a ete le seul a comuniquer avec moi depuis la creation de l'exemple 1. Une forme de reconnaissance de la legitimité de son travail.

Ensuite je souhaite exprimer toute mon admiration devant la demonstration magistrale de la part de Thierry de sa maitrise du domaine.
Mais en toute honnetete, il me l'aurais ecris en chinois, je crois que j'aurai ete autant admiratif. Par chance est passe un ami qui touche un peu Excel,
et seulement en changeant une lettre:

Sub Clean()
Dim WS As Worksheet
Dim L As Byte

L = Range("I65536").End(xlUp).Row

pour:("K65536").

le message d'erreur a disparu, et tout fonctionne parfaitement.


Pour finir, je veux vous remercier une derniere fois a tous, et plus particulierement a Tof, et vous reiterer mon offre d'aide dans la domaine des telephones mobiles. Envoyez moi un email en vous referencant du forum a: faeb@iespana.es, et je vous repondrai en evitant de vous noyer de termes techniques.

Merci beaucoup et a + peut etre.

Bleck
 
@

@Christophe@

Guest
Bonsoir a tous

Ben me voila, olala, qu'elle mouvement, effectivement Thierry, tu as raté tous le début, Bleck a posé ca question quelque question plus loin que celle de Dj run sur laquelle toi Thierry, moi, zon, Eric, Monique, ...et je me souviens plus trop avons bossé, alors j'ai aidé a mon tour Bleck, qui je dois dire rajoutais a chaque étape une nouvelles étapes.

Pour ton suivi, voici le début, le tous début, parce que après il ya surement encore eu 3 poste avec la suite, cause problème forum.

Lien supprimé

Tu verras d'ailleur Thierry que j'envoi Bleck vers notre poste avec DJ-run et que je lui parle de ton fichier.

Mais bon, il est vrai que j'ai fait quelque erreur, et pourtant nous avons parler du problème de Byte, Zon en a parlé dans le poste de DJ-run, mais comme nous parlions de a peine 25 ligne, nous avons laissé Byte

Mais me voila tous de même content que Bleck est aidé et que le grand chef du VBA Thierry est passé par la pour corrigé tous cela.

Bonne soirée a vous tous, et désolé, mais j'ai pas su venir plustôt, trop de boulot



@Christophe@
 
@

@+Thierry

Guest
Tiens bonsoir @Xtof, Bleck et le Forum


Heuh oui @Xtof j'ai lu le fil 29122, j'ai d'ailleurs même mis le lien sur ce fil 29122 dans mon post... Car j'ai passé un bon moment ce matin à retracer cette histoire et j'ai donc analysé ton Exemple7.xls que j'ai trouvé sur ce fil aussi... Donc le suivi il a été fait et même inidice après indice comme un jeu de piste pire que Sherlock !! lol

Pour Bleck, oui je comprends très bien ton enthousiasme et c'est très bien, mais pense juste aux autres lecteurs qui eux, ne peuvent même pas comprendre de quoi tu parles. Mais c'est pas grave, erreur de newbies :)

Par contre, je préconise que tu vires la macro Clean Entière et que tu la corriges comme j'ai indiqué, car tu auras en prime d'un code plus rapide (boucle inutile en moins) un code Test afin d'éviter d'éradiquer toutes tes données définitivement par erreur de manip... (Faire l'épuration deux fois deux suites = Plus rien dans les feuilles individuelles / PLus Rien dans "Inicial"... un peu embêtant peut-être !! (lol)

De plus la ligne que tu as modifiée ne sert strictement à rien, même dans la macro Clean elle-même (que l'on peut-donc supprimer aussi) En fait avec cette variable "L" je pense que @Xtof est parti sur un truc puis il a changé d'idée !! (Mdr) et en plus et comme c'est souvent le cas c'est ce truc absolument inutile qui fait planter !!

Bon enfin tu fais comme tu veux, Je te conseille donc de remplacer le contenu du module2 par celui ci dessus... (Pas difficile tu effaces ce qu'il y a dans ce module2 et tu copie et colle ce qu'il y a au-dessus sans avoir besoin d'aide particulière)

Maintenant si tu as un problème de changement de taille de plage faudra juste que tu adaptes à la plage réélle, car, moi, le tableau que j'ai eu entre les mains s'arrête à la colonne I (il semblerait qui tu vas jusqu'à K maintenant selon ce que tu as corrigé dans ton dernier post)

Dans ce cas dans le nouveau module2 tu changes :
WS.Columns("A:I").ClearContents
Par
WS.Columns("A:K").ClearContents
C'est tout pour le modul2


Mais c'est aussi le module1 qui va foirer... En effet les copies de lignes sont faites sur 9 colonnes (A à I) et c'est écrit ici :

Sub CopyPaste()
...blah blah blah

WSInicial.Range(Cells(Cell.Row, 1), Cells(Cell.Row, 9)).Copy
ActiveSheet.Paste Destination:=Worksheets(Var & " " & Var2).Range("A" & L)

..blah blah
End Sub

Si tu vas jusqu'en colonne K c'est plus (Cell.Row, 9) mais (Cell.Row, 11), voilà le reste devrait marcher.

Sinon tu changes rien si tu es toujours de A à I...

Voilà comme çà c'est plus clair, car j'ai pas vraiment compris cette correction sur une ligne inutile puisque j'ai dis que j'arretais la correction sur cette macro qui n'avait pas lieu d'exister (re lol)

Bon aller Bonne Nuit à Tous et Toutes
@+Thierry
 
@

@Christophe@

Guest
Bonjour

En faite Thierry, tu as tous fait raison, moi aussi il m'a fallu tous un temps pour comprendre, et je lui indique d'ailleur dans notre dernier fil à Bleck et moi

Il aurait du être option Explicit depuis le départ, mais il ne connaissais rien au macro et ne savais pas que tous ce qu'il désirait de A à Z était possible

Donc, il a commencé par demandé la séparation, ensuite il fallait la séparation mais sur deux critére selon 2 collone au lieu d'une

Par après il fallait garder les feuille d'origine

Ensuite il voulait garder les feuilles parce que il veux ajouter des fonctions excel dans certaine cellule, je m'explique:

C'est l'histoire des collone I et K
On aurais su simplifie le problème dés le départ, comme tu dis la macro n'as pas raison d'étre

En faite Bleck séparait les données de sa plage initial dans plusieur feuille selon certain critère, avec du copie coller, ensuite il indique une formule précise par feuille et le copie vers le bas, puisque tous est filtré donc il copie ca formule dans toutes les cellule J et après il recopie le tous avec les formule sur la page initial avec cette fameuse collone J en plus.

Mais sur cette page inicial, il doit garder la valeur de ca collone K puisque elle contient a nouveau un formule, tu comprends l'usine a gaz Thierry

Mais moi j'ai pas compris direct, puisque Bleck me demandais les choses étape par étape, selon comment lui le fesais en manuel

Mais après dans sa derniere demande, celle de mon exemple7, j'ai compris toutes l'usine, rire

Et nous auroins pu dès le départ bosser autrement, tous simplement resté sur la page inicial, chercher et selon les critère inséré une certaine formule en collone J et K
La macro sais faire cela très vite, mais Bleck non, biensur, cela lui prendra un max de temps, parcourir ligne par ligne, vérifie les 2 condition et écrire ca formule en J et K, tu vois le bordel

Moi dans tous cela, arrivé en exemple7, j'ai pas voulu tous recommencé d'une tous autre facon, moi et Bleck avons passé quelque jour le decu, alors tous ce boulot pour rien, mais cela tu connais Thierry, je t'en ai déjà aussi fait voir de toutes les couleurs, lol

Voila pour notre petite histoire, j'espère que tu comprends un peux mieux la Macro compliqué de Bleck qui pourrait être reduite à quelque ligne de code, rire

bonne journée a tous

@Christophe@
 
@

@+Thierry

Guest
Re-Bonjour ce fil

Arf @Xtof@ tu m'as envoyé ici pour lire ceci... Eux oui oui oui... J'avais lu vite fait avant le déjeuner puis on nous a coupé le FireWall pour maintenance...

Quand tu viens de me dire as tu suivi le Post de Bleck j'ai cru qu'il avait fait un nouveau Post et qu'il avait un problème avec la manip que je lui ai conseillée.

Pour en revenir à tes (terribles) problèmes (lol)... En fait pour ma part... moi je ne cherche pas à comprendre, je suis radical... Tout ce que je sais en VBA... Soit on repard complet à Zéro et c'est beaucoup plus simple... Soit on reprend de l'existant et on se fait ch... et en plus on risque de buguer.

Il est aussi vrai qu'il est parfois très difficile de suivre les demandes qui, au fûr et à mesure d'un fil de discussion, deviennent parfois de plus en plus compliquées et surtout infernales à réaliser dans le code sur lequel on est parti au départ suite à des explications trop vagues... ou carrément inverses !!

Mais ça apprend !! :)

@+Thierry
 

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista