[VBA] erreur de compilation procédure trop grande

erreur de compilation procédure trop grande [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 12-08-2009 à 17:13:02    

Bonjour  ,  
toujours débutant en VBA j'ai une macro qui fait 365ko ..et ce message d'erreur m'apparait ...erreur de compilation procédure trop grande
 
En faite la quasi totalité du code est dans un Private Sub CommandButton_Click() ...  mais le hic c'est que je pas trop la découpé en de petit bouton , car l'utilisateur devra appuyer que sur une bouton ( j'ai deja fait beucoup de boucle pour limité la longueur ..)  
 
merci de donner idée et des solutions  
ps  : j'ai deux autres posts toujours en attente de réponses
cordialement  

Reply

Marsh Posté le 12-08-2009 à 17:13:02   

Reply

Marsh Posté le 12-08-2009 à 17:19:40    

La réponse est dans la question: découple en plusieurs fonctions. Chacune de tes fonctions devrait être courte. Très courte, genre 20-30 lignes.
 
Evite aussi de déclarer 47.000 variables en dehors de tes fonctions, c'est une mauvaise habitude. Déclare autant que possible à l'intérieur des fonctions.
 
Et tape un Option Explicit en première ligne de ton module. Si ça ne marche plus, c'est que c'est encore pire que tu le croyais.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 12-08-2009 à 17:38:19    

On peut avoir un copié/collé du code ? :)

Reply

Marsh Posté le 12-08-2009 à 17:43:27    

foxley_gravity a écrit :

( j'ai deja fait beucoup de boucle pour limité la longueur ..)


En fait ce passage me fait encore plus peur. Mais c'est bien que tu ais vu l'usage qu'on peut faire des boucles.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 12-08-2009 à 18:35:20    

lol le code fait plus de 3 milles caractères je crois ^^ il y a beaucoup de copier collé .. mais obligatoire , car aucune logique dans la copie de cellule ( des dizaine d'onglet avec chacun des centaines de cellules)
 
donc reprenons ,j'ai un bouton ... c'est possible de mettre plusieurs petite procédure dans un bouton ?
si oui faudra t'il faire des changements du genre répéter  les variables ?
 
cordialement  
 
ps : ca serait vraiment génial si qql pouvait m'aider sur les posts :  Problème dans une macro devant faire un tri,
[VBA] problème dans une boucle

Reply

Marsh Posté le 13-08-2009 à 08:16:40    

Comme a dit drasche il faut découper en plusieurs sous fonctions que tu apellera avec des CALL dans ton event Click.

Reply

Marsh Posté le 13-08-2009 à 09:51:33    

Et sans mettre le code ici, on aura du mal à te dire où couper, où faire les fonctions et comment etc. :)

Reply

Marsh Posté le 13-08-2009 à 09:59:10    

question sudsidiere  :comment copier un commentaire d'une cellule  d'un workbook dans une autre cellule d'un autre workbook ?
 
J'ai essayé ca mais ca marche pas  :
 
Cells(2, 2).ClearComments
Cells(2, 2).Select
Cells(2, 2).AddComment
Workbooks(1).Worksheets(1).Cells(3, 3).Comment.Text Text:=Workbooks(2).Worksheets(1).Cells(2, 2).Comment
 
 
 
 
 
exemple du code à compacter :
 

Code :
  1. 'Début de l'écriture du ficher log (qui s'enregistre dans mes documents)
  2.  
  3.  
  4. Const ForReading = 1, ForWriting = 2, ForAppending = 3
  5. Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
  6.  
  7. Dim fs, f, ts, s
  8.  
  9. Set fs = CreateObject("Scripting.FileSystemObject" )
  10. fs.CreateTextFile "fichier_log.txt"      'Crée un fichier
  11.  Set f = fs.GetFile("fichier_log.txt" )
  12.  Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
  13.    
  14.  On Error Resume Next
  15.  
  16.  
  17. '--------------------------------------------------------------------------------------------------------------------
  18. ' Ouverture des fichiers nécéssaires à l'inventaire
  19.  
  20. 'Fichier cible
  21. '--------------------------------------------------------------------------------------------------------------------
  22. ' ouverture fichier indiv
  23.  
  24. Workbooks.Open Filename:="F:\013_DirFinTech\042_DptEtudes\018_SrvSupFiabSI\SOP - Support Offres Produits\Inventaire emprunteurs\Laurent\fichier nécessaire2\indiv08.xls"
  25.  
  26. If Err.Number = 0 Then ' Pas d'erreur lors de l'ouverture du fichier
  27.     ts.Write "ouverture du fichier indiv ok" & vbCrLf
  28.     Else
  29.     ts.Write "ouverture du fichier indiv échec" & vbCrLf
  30.      End If
  31.     Err.Clear 'remettre à 0 la valeur de l'erreur
  32.    
  33. 'Fichier Source
  34. '--------------------------------------------------------------------------------------------------------------------
  35. ' ouverture fichier envoyé par la gestion des contrats
  36.  
  37. Workbooks.Open Filename:="F:\013_DirFinTech\042_DptEtudes\018_SrvSupFiabSI\SOP - Support Offres Produits\Inventaire emprunteurs\Laurent\fichier nécessaire2\STATISTIQUES MENSUELLESmai1.xls"
  38.  
  39. If Err.Number = 0 Then ' Pas d'erreur lors de l'ouverture du fichier
  40.     ts.Write "ouverture du fichier gestion des contrats ok" & vbCrLf
  41.     Else
  42.     ts.Write "ouverture du fichier gestion des contrats échec" & vbCrLf
  43.      End If
  44.     Err.Clear 'remettre à 0 la valeur de l'erreur
  45.    
  46. ' ouverture fichier envoyé par la sélection médicale
  47.  
  48. Workbooks.Open Filename:="F:\013_DirFinTech\042_DptEtudes\018_SrvSupFiabSI\SOP - Support Offres Produits\Inventaire emprunteurs\Laurent\fichier nécessaire2\2008Sinistres02062009.xls"
  49.  
  50. If Err.Number = 0 Then ' Pas d'erreur lors de l'ouverture du fichier
  51.     ts.Write "ouverture du fichier sélection médicale ok" & vbCrLf
  52.     Else
  53.     ts.Write "ouverture du fichier sélection médicale échec" & vbCrLf
  54.      End If
  55.     Err.Clear 'remettre à 0 la valeur de l'erreur
  56.      
  57. ' ouverture fichier envoyé par la comptabilité
  58.  
  59. Workbooks.Open Filename:="F:\013_DirFinTech\042_DptEtudes\018_SrvSupFiabSI\SOP - Support Offres Produits\Inventaire emprunteurs\Laurent\fichier nécessaire2\balance prev.300609.xls"
  60.  
  61. If Err.Number = 0 Then ' Pas d'erreur lors de l'ouverture du fichier
  62.     ts.Write "ouverture du fichier comptabilité ok" & vbCrLf
  63.     Else
  64.     ts.Write "ouverture du fichier comptabilité échec" & vbCrLf
  65.      End If
  66.     Err.Clear 'remettre à 0 la valeur de l'erreur

Reply

Marsh Posté le 13-08-2009 à 10:00:16    

Code :
  1. '--------------------------------------------------------------------------------------------------------------------
  2. 'Information sur le nombre d'assuré
  3.  
  4.  
  5. 'pour PREVI AVENIR
  6. Workbooks("indiv08.xls" ).Worksheets("PREVI" ).Cells(103, 3).Value = Workbooks("STATISTIQUES MENSUELLESmai1.xls" ).Worksheets("06 2009" ).Cells(8, 2).Value
  7.  
  8. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  9.     ts.Write "copie de cellule(103, 3)nombre d'assuré,PREVI AVENIR  ok" & vbCrLf
  10.     Else
  11.     ts.Write "copie de cellule(103, 3)nombre d'assuré,PREVI AVENIR échec" & vbCrLf
  12.      End If
  13.     Err.Clear 'remettre à 0 la valeur de l'erreur
  14.  
  15.  
  16. 'pour PREVI MUTUEL
  17. Workbooks("indiv08.xls" ).Worksheets("PREVI" ).Cells(105, 3).Value = Workbooks("STATISTIQUES MENSUELLESmai1.xls" ).Worksheets("06 2009" ).Cells(9, 2).Value
  18.  
  19. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  20.     ts.Write "copie de cellule(105, 3)nombre d'assuré,PREVI MUTUEL  ok" & vbCrLf
  21.     Else
  22.     ts.Write "copie de cellule(105, 3)nombre d'assuré,PREVI MUTUEL échec" & vbCrLf
  23.      End If
  24.     Err.Clear 'remettre à 0 la valeur de l'erreur
  25.  
  26. 'pour ATLANTIQUE AVENIR
  27. Workbooks("indiv08.xls" ).Worksheets("PREVI" ).Cells(104, 3).Value = Workbooks("STATISTIQUES MENSUELLESmai1.xls" ).Worksheets("06 2009" ).Cells(10, 2).Value
  28.  
  29. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  30.     ts.Write "copie de cellule(104, 3)nombre d'assuré,ATLANTIQUE AVENIR  ok" & vbCrLf
  31.     Else
  32.     ts.Write "copie de cellule(104, 3)nombre d'assuré,ATLANTIQUE AVENIR échec" & vbCrLf
  33.      End If
  34.     Err.Clear 'remettre à 0 la valeur de l'erreur
  35.  
  36. 'Information concernant les capitaux sous risque
  37.  
  38. 'pour PREVI AVENIR
  39. Workbooks("indiv08.xls" ).Worksheets("PREVI" ).Cells(107, 3).Value = Workbooks("STATISTIQUES MENSUELLESmai1.xls" ).Worksheets("06 2009" ).Cells(8, 3).Value
  40.  
  41. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  42.     ts.Write "copie de cellule(107, 3)nombre d'assuré,PREVI AVENIR  ok" & vbCrLf
  43.     Else
  44.     ts.Write "copie de cellule(107, 3)nombre d'assuré,PREVI AVENIR échec" & vbCrLf
  45.      End If
  46.     Err.Clear 'remettre à 0 la valeur de l'erreur
  47.  
  48. 'pour PREVI MUTUEL
  49. Workbooks("indiv08.xls" ).Worksheets("PREVI" ).Cells(109, 3).Value = Workbooks("STATISTIQUES MENSUELLESmai1.xls" ).Worksheets("06 2009" ).Cells(9, 3).Value
  50.  
  51. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  52.     ts.Write "copie de cellule(109, 3)nombre d'assuré,PREVI MUTUEL  ok" & vbCrLf
  53.     Else
  54.     ts.Write "copie de cellule(109, 3)nombre d'assuré,PREVI MUTUEL échec" & vbCrLf
  55.      End If
  56.     Err.Clear 'remettre à 0 la valeur de l'erreur
  57.  
  58.  
  59. 'pour ATLANTIQUE AVENIR
  60. Workbooks("indiv08.xls" ).Worksheets("PREVI" ).Cells(108, 3).Value = Workbooks("STATISTIQUES MENSUELLESmai1.xls" ).Worksheets("06 2009" ).Cells(10, 3).Value
  61.  
  62. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  63.     ts.Write "copie de cellule(108, 3)nombre d'assuré,ATLANTIQUE AVENIR  ok" & vbCrLf
  64.     Else
  65.     ts.Write "copie de cellule(108, 3)nombre d'assuré,ATLANTIQUE AVENIR échec" & vbCrLf
  66.      End If
  67.     Err.Clear 'remettre à 0 la valeur de l'erreur
  68. '--------------------------------------------------------------------------------------------------------------------
  69. '--------------------------------------------------------------------------------------------------------------------
  70. 'Information envoyé par les partenaires
  71.  
  72.  
  73. '--------------------------------------------------------------------------------------------------------------------
  74. 'Information envoyé par le produit PAA
  75.  
  76. 'pour le partenaire CMB
  77.  
  78. 'concernant les cotisations
  79. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(14, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(16, 2).Value
  80.  
  81. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  82.     ts.Write "copie de cellule(14, 3)produit PAA,CMB,cotis  ok" & vbCrLf
  83.     Else
  84.     ts.Write "copie de cellule 14, 3)produit PAA,CMB,cotis échec" & vbCrLf
  85.      End If
  86.     Err.Clear 'remettre à 0 la valeur de l'erreur
  87.  
  88. 'concernant les frais de gestion Pol Pay
  89. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(36, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(7, 2).Value
  90.  
  91. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  92.     ts.Write "copie de cellule(36, 3)produit PAA,CMB,frais de gestion pol pay ok" & vbCrLf
  93.     Else
  94.     ts.Write "copie de cellule(36, 3)produit PAA,CMB,frais de gestion pol pay  échec" & vbCrLf
  95.      End If
  96.     Err.Clear 'remettre à 0 la valeur de l'erreur
  97.  
  98. 'concernant les frais de gestion Pol Grat
  99. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(37, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(8, 2).Value
  100.  
  101. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  102.     ts.Write "copie de cellule(37, 3)produit PAA,CMB,frais de gestion pol grat   ok" & vbCrLf
  103.     Else
  104.     ts.Write "copie de cellule(37, 3)produit PAA,CMB,frais de gestion pol grat  échec" & vbCrLf
  105.      End If
  106.     Err.Clear 'remettre à 0 la valeur de l'erreur
  107.  
  108.  
  109. 'concernant les frais de gestion affranchissement
  110. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(38, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(9, 2).Value
  111.  
  112. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  113.     ts.Write "copie de cellule(38, 3)produit PAA,CMB,gestion affranchissement  ok" & vbCrLf
  114.     Else
  115.     ts.Write "copie de cellule(38, 3)produit PAA,CMB,gestion affranchissement  échec" & vbCrLf
  116.      End If
  117.     Err.Clear 'remettre à 0 la valeur de l'erreur
  118.  
  119.  
  120. 'concernant les autres frais de gestion
  121. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(39, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(10, 2).Value
  122.  
  123. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  124.     ts.Write "copie de cellule(39, 3)produit PAA,CMB,autres frais de gestion ok" & vbCrLf
  125.     Else
  126.     ts.Write "copie de cellule(39, 3)produit PAA,CMB,autres frais de gestion échec" & vbCrLf
  127.      End If
  128.     Err.Clear 'remettre à 0 la valeur de l'erreur
  129.  
  130.  
  131. 'concernant le nombre d'assuré grat
  132. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(97, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(11, 2).Value
  133.  
  134. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  135.     ts.Write "copie de cellule(97, 3)produit PAA,CMB,nombre d'assuré grat ok" & vbCrLf
  136.     Else
  137.     ts.Write "copie de cellule(97, 3)produit PAA,CMB,nombre d'assuré grat échec" & vbCrLf
  138.      End If
  139.     Err.Clear 'remettre à 0 la valeur de l'erreur
  140.  
  141.  
  142. 'concernant le nombre d'assuré pay
  143. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(98, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(12, 2).Value
  144.  
  145. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  146.     ts.Write "copie de cellule(98, 3)produit PAA,CMB,nombre d'assuré pay ok" & vbCrLf
  147.     Else
  148.     ts.Write "copie de cellule(98, 3)produit PAA,CMB,nombre d'assuré pay échec" & vbCrLf
  149.      End If
  150.     Err.Clear 'remettre à 0 la valeur de l'erreur
  151.  
  152.  
  153. 'concernant les capitaux sous risque
  154. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(103, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(13, 2).Value
  155.  
  156.  
  157. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  158.     ts.Write "copie de cellule(103, 3)produit PAA,CMB,capitaux sous risque ok" & vbCrLf
  159.     Else
  160.     ts.Write "copie de cellule(103, 3)produit PAA,CMB,capitaux sous risque échec" & vbCrLf
  161.      End If
  162.     Err.Clear 'remettre à 0 la valeur de l'erreur
  163.  
  164.  
  165. 'concernant les sinitres
  166. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(80, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(14, 2).Value
  167.  
  168.  
  169. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  170.     ts.Write "copie de cellule(80, 3)produit PAA,CMB,concernant les sinitres ok" & vbCrLf
  171.     Else
  172.     ts.Write "copie de cellule(80, 3)produit PAA,CMB,concernant les sinitres échec" & vbCrLf
  173.      End If
  174.     Err.Clear 'remettre à 0 la valeur de l'erreur
  175.  
  176.  
  177. 'concernant le nom des sinistrés en commentaire
  178. 'Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(80, 3).Value = Workbooks("reponsePAA1.xls" ).Worksheets("CMB" ).Cells(15, 2).Value
  179.  
  180. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  181.     ts.Write "copie de cellule(80, 3)  ok" & vbCrLf
  182.     Else
  183.     ts.Write "copie de cellule (80, 3) échec" & vbCrLf
  184.      End If
  185.     Err.Clear 'remettre à 0 la valeur de l'erreur
  186.  
  187.  
  188. '--------------------------------------------------------------------------------------------------------------------
  189. 'pour le partenaire CMLACO
  190.  
  191. 'concernant les cotisations
  192. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(15, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(16, 2).Value
  193.  
  194.  
  195. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  196.     ts.Write "copie de cellule(15, 3)produit PAA,CMLACO,cotis ok" & vbCrLf
  197.     Else
  198.     ts.Write "copie de cellule(15, 3)produit PAA,CMLACO,cotis  échec" & vbCrLf
  199.      End If
  200.     Err.Clear 'remettre à 0 la valeur de l'erreur
  201.  
  202.  
  203. 'concernant les frais de gestion Pol Pay
  204. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(42, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(7, 2).Value
  205.  
  206. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  207.     ts.Write "copie de cellule(42, 3)produit PAA,CMLACO,frais de gestion Pol Pay  ok" & vbCrLf
  208.     Else
  209.     ts.Write "copie de cellule(42, 3)produit PAA,CMLACO,frais de gestion Pol Pay échec" & vbCrLf
  210.      End If
  211.     Err.Clear 'remettre à 0 la valeur de l'erreur
  212.  
  213. 'concernant les frais de gestion Pol Grat
  214. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(43, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(8, 2).Value
  215.  
  216.  
  217. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  218.     ts.Write "copie de cellule(43, 3)produit PAA,CMLACO,frais de gestion Pol Grat  ok" & vbCrLf
  219.     Else
  220.     ts.Write "copie de cellule(43, 3)produit PAA,CMLACO,frais de gestion Pol Grat échec" & vbCrLf
  221.      End If
  222.     Err.Clear 'remettre à 0 la valeur de l'erreur
  223.  
  224. 'concernant les frais de gestion affranchissement
  225. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(44, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(9, 2).Value
  226.  
  227. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  228.     ts.Write "copie de cellule(44, 3)produit PAA,CMLACO,frais de gestion affranchissement  ok" & vbCrLf
  229.     Else
  230.     ts.Write "copie de cellule(44, 3)produit PAA,CMLACO,frais de gestion affranchissement échec" & vbCrLf
  231.      End If
  232.     Err.Clear 'remettre à 0 la valeur de l'erreur
  233.  
  234. 'concernant les autres frais de gestion
  235. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(45, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(10, 2).Value
  236.  
  237. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  238.     ts.Write "copie de cellule(45, 3)produit PAA,CMLACO,autres frais de gestion  ok" & vbCrLf
  239.     Else
  240.     ts.Write "copie de cellule(45, 3)produit PAA,CMLACO,autres frais de gestion échec" & vbCrLf
  241.      End If
  242.     Err.Clear 'remettre à 0 la valeur de l'erreur
  243.  
  244. 'concernant le nombre d'assuré grat
  245. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(99, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(11, 2).Value
  246.  
  247. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  248.     ts.Write "copie de cellule(99, 3)produit PAA,CMLACO,nombre d'assuré grat  ok" & vbCrLf
  249.     Else
  250.     ts.Write "copie de cellule (99, 3)produit PAA,CMLACO,nombre d'assuré grat échec" & vbCrLf
  251.      End If
  252.     Err.Clear 'remettre à 0 la valeur de l'erreur
  253.  
  254. 'concernant le nombre d'assuré pay
  255. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(100, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(12, 2).Value
  256.  
  257. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  258.     ts.Write "copie de cellule(100, 3)produit PAA,CMLACO,nombre d'assuré pay  ok" & vbCrLf
  259.     Else
  260.     ts.Write "copie de cellule(100, 3)produit PAA,CMLACO,nombre d'assuré pay échec" & vbCrLf
  261.      End If
  262.     Err.Clear 'remettre à 0 la valeur de l'erreur
  263.  
  264. 'concernant les capitaux sous risque
  265. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(104, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(13, 2).Value
  266.  
  267. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  268.     ts.Write "copie de cellule(104, 3)produit PAA,CMLACO,capitaux sous risque  ok" & vbCrLf
  269.     Else
  270.     ts.Write "copie de cellule(104, 3)produit PAA,CMLACO,capitaux sous risque échec" & vbCrLf
  271.      End If
  272.     Err.Clear 'remettre à 0 la valeur de l'erreur
  273.  
  274. 'concernant les sinitres
  275. Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(90, 3).Value = Workbooks("reponsePAA2.xls" ).Worksheets("CMLACO" ).Cells(14, 2).Value
  276.  
  277. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  278.     ts.Write "copie de cellule(90, 3)produit PAA,CMLACO,concernant les sinitres ok" & vbCrLf
  279.     Else
  280.     ts.Write "copie de cellule(90, 3)produit PAA,CMLACO,concernant les sinitres  échec" & vbCrLf
  281.      End If
  282.     Err.Clear 'remettre à 0 la valeur de l'erreur
  283.  
  284. 'concernant le nom des sinistrés en commentaire
  285. 'Workbooks("indiv08.xls" ).Worksheets("PAA" ).Cells(90, 3).Value = Workbooks("reponsePAA.xls" ).Worksheets("CMLACO" ).Cells(15, 2).Value
  286.  
  287. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  288.     ts.Write "copie de cellule(90, 3)produit PAA,CMLACO,concernant les sinitres ok" & vbCrLf
  289.     Else
  290.     ts.Write "copie de cellule(90, 3)produit PAA,CMLACO,concernant les sinitres échec" & vbCrLf
  291.      End If
  292.     Err.Clear 'remettre à 0 la valeur de l'erreur
  293.  
  294. '--------------------------------------------------------------------------------------------------------------------
  295. 'Information envoyé par le produit PPA
  296.  
  297.  
  298. '--------------------------------------------------------------------------------------------------------------------
  299. 'pour le partenaire GFP
  300.  
  301. 'concernant les cotisations
  302. Workbooks("indiv08.xls" ).Worksheets("PPA" ).Cells(14, 3).Value = Workbooks("reponsePPA1.xls" ).Worksheets("CMLACO" ).Cells(11, 2).Value
  303.  
  304. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  305.     ts.Write "copie de cellule(14, 3)  ok" & vbCrLf
  306.     Else
  307.     ts.Write "copie de cellule (14, 3) échec" & vbCrLf
  308.      End If
  309.     Err.Clear 'remettre à 0 la valeur de l'erreur
  310.  
  311. 'concernant les frais de gestion Pol Pay
  312. Workbooks("indiv08.xls" ).Worksheets("PPA" ).Cells(36, 3).Value = Workbooks("reponsePPA1.xls" ).Worksheets("CMLACO" ).Cells(7, 2).Value
  313.  
  314. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  315.     ts.Write "copie de cellule(36, 3)  ok" & vbCrLf
  316.     Else
  317.     ts.Write "copie de cellule (36, 3) échec" & vbCrLf
  318.      End If
  319.     Err.Clear 'remettre à 0 la valeur de l'erreur
  320.  
  321.  
  322. 'concernant les frais de gestion Pol Grat
  323. Workbooks("indiv08.xls" ).Worksheets("PPA" ).Cells(37, 3).Value = Workbooks("reponsePPA1.xls" ).Worksheets("CMLACO" ).Cells(8, 2).Value
  324.  
  325. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  326.     ts.Write "copie de cellule(37, 3)  ok" & vbCrLf
  327.     Else
  328.     ts.Write "copie de cellule (37, 3) échec" & vbCrLf
  329.      End If
  330.     Err.Clear 'remettre à 0 la valeur de l'erreur
  331.  
  332. 'concernant le nombre d'assuré grat
  333. Workbooks("indiv08.xls" ).Worksheets("PPA" ).Cells(97, 3).Value = 0
  334.  
  335. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  336.     ts.Write "copie de cellule(97, 3)  ok" & vbCrLf
  337.     Else
  338.     ts.Write "copie de cellule (97, 3) échec" & vbCrLf
  339.      End If
  340.     Err.Clear 'remettre à 0 la valeur de l'erreur
  341.  
  342. 'concernant le nombre d'assuré pay
  343. Workbooks("indiv08.xls" ).Worksheets("PPA" ).Cells(98, 3).Value = 1022
  344.  
  345. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  346.     ts.Write "copie de cellule(98, 3)  ok" & vbCrLf
  347.     Else
  348.     ts.Write "copie de cellule (98, 3) échec" & vbCrLf
  349.      End If
  350.     Err.Clear 'remettre à 0 la valeur de l'erreur
  351.  
  352. 'concernant les sinistre
  353. Workbooks("indiv08.xls" ).Worksheets("PPA" ).Cells(80, 3).Value = Workbooks("reponsePPA1.xls" ).Worksheets("CMLACO" ).Cells(9, 2).Value
  354.  
  355. If Err.Number = 0 Then ' Pas d'erreur lors de la copie
  356.     ts.Write "copie de cellule(80, 3)  ok" & vbCrLf
  357.     Else
  358.     ts.Write "copie de cellule (80, 3) échec" & vbCrLf
  359.      End If
  360.     Err.Clear 'remettre à 0 la valeur de l'erreur


 

Reply

Marsh Posté le 13-08-2009 à 10:02:40    

hint: tu peux passer des paramètres à tes fonctions.
 
hint2: ta fonction peut renvoyer une valeur de résultat.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 13-08-2009 à 10:02:40   

Reply

Marsh Posté le 13-08-2009 à 10:03:48    

excuse moi drasche mais je vois pas trop , peut tu me donner un exemple à partir de mon code ? merci

Reply

Marsh Posté le 13-08-2009 à 10:10:35    

Bonjour,
Faire un  
sub openwkb(nomfichier as string, compl_message as string)
 Workbooks.Open Filename:="F:\013_DirFinTech\042_DptEtudes\018_SrvSupFiabSI\SOP - Support Offres Produits\Inventaire emprunteurs\Laurent\fichier nécessaire2\" & nomfichier
  If Err.Number = 0 Then ' Pas d'erreur lors de l'ouverture du fichier      
     ts.Write "ouverture du fichier " & compl_message & "ok" & vbCrLf      
Else      
     ts.Write "ouverture du fichier" & compl_message & "échec" & vbCrLf      
End If    
 Err.Clear 'remettre à 0 la valeur de l'erreur


Message édité par seniorpapou le 13-08-2009 à 10:12:59
Reply

Marsh Posté le 13-08-2009 à 10:24:41    

Re,
en regardant tes "copiés" il semble que tes liens entre PPA (récepteur) et  
et CMLACO, CMB etc... soient fixes.
dans ce cas, au niveau de PPA, utilise , pour une cellule donnée la fonction  = ....... en allant chercher la valeur dans le workbook désiré. Tu n'as pas besoin de VB pour faire cela.
Il semble que tu sois hyper-actif, hyper-courageux, mais essaye de réfléchir avant de toucher ton clavier!!!
Bonne journée.

Reply

Marsh Posté le 13-08-2009 à 10:33:21    

ok merci papou , dit moi si c'est le bon truc alors  
Si c'est bon dis moi comment integrer le tout dans un bouton merci bcp  
 

Code :
  1. Sub toto()
  2.  
  3. Call lolo("indiv08.xls" )
  4. Call lolo("tous les autre fichier" )
  5. '.....
  6. end sub
  7.  
  8. Function lolo(nomfichier As String)
  9.  
  10.  
  11. Workbooks.Open Filename:="F:\013_DirFinTech\042_DptEtudes\018_SrvSupFiabSI\SOP - Support Offres Produits\Inventaire emprunteurs\Laurent\fichier nécessaire2\" & nomfichier  
  12.  
  13. end function

Reply

Marsh Posté le 13-08-2009 à 10:36:40    

et j'ai pas trop compris ta derniere remarque lol , si tu pouvez me faire encore un si beau exemple lol ... oui avec environ 5000 lignes comme ca ( change apres  pas  tjrs des copies lol )  ,je pense être le roi des courageux aux pays des imbécile :p

Reply

Marsh Posté le 13-08-2009 à 10:39:03    

re,
tu n'es pas loin, mais remplace "function" par SUB, je crois que quelqu'un t'as déjà dit la différence entre function et sub.
si tu fais la mise à jour par le =...... dont je t'ai parlé, tu n'auras probablement pas besoin de faire tes open.....
 
pour intégrer le lancement de la "macro toto() dans ton bouton, au moment de la création de ton bouton, tu indiques le nom de la macro à lancer: ici ce sera toto


Message édité par seniorpapou le 13-08-2009 à 10:40:40
Reply

Marsh Posté le 13-08-2009 à 10:45:55    

ok merci  
mais pour lancer toto il faut mettre quoi comme instruction dans le  
 
Private Sub CommandButton20_Click()
 
start sub toto() ?
 
et j'ai toujours pas trop compris l'histoire de la mise à jour avec le  =

Reply

Marsh Posté le 13-08-2009 à 10:48:37    

Re,
as-tu acheté des bouquins du style: ACCESS pour les nuls, et EXCEL pour les nuls, il n'y a pas grand chose dedans mais cela pourrait te servir pour connaître un certain nombre de possibilités, et, connaissant ces possibilités, tu pourrais réorganiser ton travail. Tu gagneras beaucoup de temps, en consacrant du temps à la réflexion  Il y a peut-être d'autres bouquins, mais je ne connais pas trop......

Reply

Marsh Posté le 13-08-2009 à 10:48:55    

call toto
 
C'est pas comme si t'avais jamais vu cette instruction en plus...

Reply

Marsh Posté le 13-08-2009 à 10:50:18    

ok mais , je savais pas que l'on pouvez pas appelé des sub , aussi  je croyais que c'était jsute des variables du type non du fichier ....

Reply

Marsh Posté le 13-08-2009 à 10:52:59    

foxley_gravity a écrit :

ok merci  
mais pour lancer toto il faut mettre quoi comme instruction dans le  
 
Private Sub CommandButton20_Click()
 
call toto
et j'ai toujours pas trop compris l'histoire de la mise à jour avec le  =


 
désolé Deamon, je n'avais pas vu ta réponse.


Message édité par seniorpapou le 13-08-2009 à 10:55:55
Reply

Marsh Posté le 13-08-2009 à 10:53:13    

Mais des sub c'est comme des function mais ça renvoit rien c'est tout. Ce sont des fonctions les 2 que tu peux appeler.

Reply

Marsh Posté le 13-08-2009 à 11:00:23    

foxley......, si j'ai le temps, je te prendrai en MP pour l'utilisation du signe =,  dans l'après midi.  C'est un peu le B A BA d'Excel et je crois qu'il n'est pas nécessaire de saturer les post's pour cela.

Reply

Marsh Posté le 13-08-2009 à 11:02:43    

(il lui faudrait un tuto sur la prog, surtout)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 13-08-2009 à 11:06:41    

drasche a écrit :

(il lui faudrait un tuto sur la prog, surtout)


C'est pas faute de lui avoir dit... Car vu tous les problèmes qu'il a il gagnerait du temps à lire un bouquin.

Reply

Marsh Posté le 13-08-2009 à 11:07:01    

ok merci bcp papou , ca serait avec plaisir :)  dis moi a quel heure ..

Reply

Marsh Posté le 13-08-2009 à 11:07:55    

Et sur excel aussi, si j'ai bien compris.

Reply

Marsh Posté le 13-08-2009 à 11:08:54    

foxley_gravity a écrit :

ok merci bcp papou , ca serait avec plaisir :)  dis moi a quel heure ..


aucune idée, mais je t'enverrai un Message dès que je suis disponible


Message édité par seniorpapou le 13-08-2009 à 11:09:19
Reply

Marsh Posté le 13-08-2009 à 11:13:32    

ben vba pour excel  ,et vba en général :)  , mais sinon excel tout seul c'est bon ..

Reply

Marsh Posté le 13-08-2009 à 11:58:29    

ok merci les call marche nickel seul probleme , au niveau du fichier log , il y a uniquement le commentaire du dernier call , qui apparait alors que moi je les voudrais tous , ie qu'il ne s'éfface pas au profit du dernier ...
en vous remerciant

Reply

Marsh Posté le 13-08-2009 à 13:32:08    

ForAppending au lieu de for writing

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed