Erreur 1004 : La methode 'Cells' de l'objet '_Global' a échoué

Erreur 1004 : La methode 'Cells' de l'objet '_Global' a échoué - VB/VBA/VBS - Programmation

Marsh Posté le 09-07-2009 à 11:46:20    

Bonjour,
 
Je travail sur une base access. Je souhaite exporter certaines informations sous excel.
J'ai donc fait un sous programme qui place les bonnes informations dans les bonnes cellules.
Le programme en soit fonctionne bien, sauf que, aléatoirement j'ai un erreur sur un "Range()".
Je dit aléatoirement car en effet, l'erreur ne surviens pas toujours mais régulièrement et il me suffit de relancer le code pour que cela fonction (sans rien avoir changé).
 
Je bug sur cette partie :

Code :
  1. 'Mise en forme des entetes
  2. With xlSheet.Range(Cells(2, 1).Address, Cells(2, I).Address)
  3.     .Interior.ColorIndex = 15
  4.     .Interior.Pattern = xlSolid
  5.     .Borders(xlEdgeBottom).LineStyle = xlContinuous
  6.     .Borders(xlEdgeBottom).Weight = xlThin
  7.     .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
  8.     .HorizontalAlignment = xlCenter
  9. End With


Sur la ligne 'With' avec l'erreur 1004 : La methode 'Cells' de l'objet '_Global' a échoué
Donc je ne comprend pas trop d'où est ce que ça viens, puisque ça marche 1 fois sur 2...
Cela vient-il d'un watch dog, un timer... oO' là je trouve cela très bizarre.
 
Si vous pouviez m'aider ou me donner des pistes ça serait très sympa
D'avance merci ;-)
 
Raph


Message édité par raph_04 le 09-07-2009 à 11:46:50
Reply

Marsh Posté le 09-07-2009 à 11:46:20   

Reply

Marsh Posté le 09-07-2009 à 13:46:20    

J'ai testé chez moi et j'obtiens une erreur sur cette ligne à cause du "I" majuscule qui sert de numéro d'indice dans le deuxième Cells.
Cette erreur disparait quand j'ajoute I = 5 juste avant la ligne du With.
Puis, j'ai une nouvelle erreur "Objet requis".
Cette erreur disparait quand j'enlève "xlSheet." devant Range. d'ailleurs, je ne sait pas à quoi sert ce xlSheet.
Si je voulais spécifier une feuille particulière, je mettrais par exemple "Worksheets(1)."
Ensuite, je n'ai plus jamais d'erreur.

Reply

Marsh Posté le 10-07-2009 à 09:50:49    

Salut,
 
J'ai essayé en enlevant le "xlSheet", mais là encore l'erreur apparaît, pas tout le temps, mais régulièrement.
J'ai identifié qu'elle survient toujours quand je relance l'extraction après avoir regardé le résultat précèdent en ouvrant le fichier excel.
Mais ce que j'ai fait c'est que j'ai remplacé le code par :

Code :
  1. For J = 1 To I
  2.     With xlSheet.Cells(2, J)
  3.         .Interior.ColorIndex = 15
  4.         .Interior.Pattern = xlSolid
  5.         .Borders(xlEdgeBottom).LineStyle = xlContinuous
  6.         .Borders(xlEdgeBottom).Weight = xlThin
  7.         .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
  8.         .HorizontalAlignment = xlCenter
  9.     End With
  10. Next J


Et là pas de problème...
Pour le "xlSheet" il été dans le code d'exemple que j'ai trouvé sur Internet (http://cafeine.developpez.com/access/tutoriel/excel/#LIV).
Je ne l'avais, moi non plus, jamais trop vu avant, mais là ça semble assez propre comme code, donc je l'ai gardé.
 
Merci pour ta réponse ;-)

Reply

Marsh Posté le 16-07-2009 à 09:52:25    

Bonjour, j'écris ici car c'est le seul sujet que j'ai trouvé qui ressemble un peu au mien, et donc je me dis qu'il y aura peut être quelqu'un pour m'aider ici :)
J'essaye de faire une interface pour des bases access. L'ensemble des données de ces bases est traitées puis mis dans des tableaux excel.
Etant données la taille de ces tableaux, j'essaye de faire un minimum de présentation, donc en outre de mettre des bordures aux cellules ^^
J'y ai passé mon après midi hier et donc j'étais tout content de trouver un sujet hier qui avait enfin du vbs et non du vba  :pt1cable:  
Mais voila même en reprenant ton code je n'arrive à rien  :(  

Code :
  1. colHeader=array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ" )
  2.         Set objExcel = CreateObject("Excel.Application" )
  3.         'Ouverture d'un nouveau porte document vierge
  4.         objExcel.Workbooks.Add
  5. ' On selectionne la deuxieme feuille pour réaliser d'abord les calculs detaillés
  6. objExcel.Workbooks(1).Worksheets(1).Name="Synth. Bdgt-Conso " & year(date)
  7.         Set onglet = objExcel.Workbooks(1).Worksheets(2)
  8. onglet.name="Vue detaillee"
  9.     With onglet.Cells(12, 12)
  10.         .Interior.ColorIndex = 15
  11.         .Interior.Pattern = xlSolid
  12.         .Borders(xlEdgeBottom).LineStyle = xlContinuous
  13.         .Borders(xlEdgeBottom).Weight = xlThin
  14.         .Borders(xlEdgeBottom).ColorIndex = xlAutomatic
  15.         .HorizontalAlignment = xlCenter
  16.     End With


Quand je tente ça j'ai une erreur d'execution inconnu ligne

Code :
  1. .Borders(xlEdgeBottom).LineStyle = xlContinuous


du coup j'ai tenté ça

Code :
  1. With onglet.Cells(12, 12)
  2.         .Interior.ColorIndex = 15
  3.         .Interior.Pattern = xlSolid 
  4. End With


là rien ne plante mais rien ne se produit....  :sweat:  
je précise que hier j'ai aussi passé ma journée àessayer d'aligne le texte dans une cellule et à faire fusionner une cellule. J'ai finalement trouvé avec en prime un superbe mal de crane  :D  
ca pour fusionner  

Code :
  1. objExcel.Worksheets("Vue detaillee" ).Range("C1:C3" ).Merge(False)


et ca pour centrer le texte

Code :
  1. onglet.Columns.AutoFit
  2. objExcel.Worksheets("Vue detaillee" ).Range("A1:Z" & j).HorizontalAlignment = 3
  3. objExcel.Worksheets("Vue detaillee" ).Range("A1:Z" & j).VerticalAlignment = 2


si ca peut aider :D  
A oui j'ai aussi une question est ce qu'on peut définir les paramètre d'une cellule par morceau c'est à dire à une ligne je lui dit d'avoir une bordure et 10 lignes plus bas d'avoir un fond coloré?
Voila merci d'avance pour toute idée :)

Reply

Sujets relatifs:

Leave a Replay

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