mesage traitement en cours + MàJ auto des cellules

mesage traitement en cours + MàJ auto des cellules - VB/VBA/VBS - Programmation

Marsh Posté le 15-06-2009 à 10:03:47    

Bonjour,  
 
Je voudrais tirer sur les cellules à mettre à jour avec une macro histoire d'automatiser la mise à jour. Et pendant le traitement je voudrais faire apparaitre un message genre "patientez"...  
 
Je suis entrain de tester cette macro:  
 
Sub tirerauto()
 
Range("A5:U5" ).Select
Selection.AutoFill Destination:=Range("A10:U10" ), Type:=xlFillDefault
Range("A5:U5" ).Select
Application.Goto Reference:="tirerauto"
 
End Sub
 
et ça pour tirer sur une matrice en fait ! et pas une colonne !! mais ça marche pas  
 
j'ai ce message d'erreur: la methode autofill de la classe range a echouée.  
 
note: en meme temps je cherche maintenant un code pour le message de traitement en cours !  
 
Merci pour votre aide.  
@+

Reply

Marsh Posté le 15-06-2009 à 10:03:47   

Reply

Marsh Posté le 15-06-2009 à 11:59:40    


Hi,
 
Je crois pas que tu puisses étendre une ligne sur plusieurs colonnes, étendre des cellules en ligne sur une ligne ok, des cellules en colonne sur une colonne ok aussi, mais pas des cellules en ligne sur une/plusieurs colonnes. En tout cas si tu regardes dans l'aide, tu as ça :

Citation :

Destination Required Range The cells to be filled. The destination must include the source range.


C'est pour ça que tu as un message d'erreur, ta plage de destination ne contient pas ta plage source.
 
Pour le message de traitement, pourquoi pas un userform avec une progressbar ?


---------------
"That kind of information doesn't just grow on trees."
Reply

Marsh Posté le 15-06-2009 à 14:08:41    

Bonjour,
 
Effectivement pour le message le mieux est un Form qui apparait (form("X" ).visible = true) puis qui disparait à la fin (.visible = false)).
Pour le copier / coller, dans le doute le mieux est d'enregistrer la macro en faisant réellement ce que tu veux faire une fois, cela enregistre avec la bonne syntaxe et hop le tour est joué.
 
"Pro du VBA"

Reply

Marsh Posté le 15-06-2009 à 14:14:27    


J'ai commenté l'affichage de l'Userform sans titlebarre car il faut du code supplémentaire. Pour la progressbar il faut faire un clic droit sur la boîte à outils dans l'userform et dans "Contrôles supplémentaires", cocher progressbar.
 
 

Code :
  1. Sub UserForm1_Activate()
  2. 'With UserForm1
  3. 'AfficheTitleBarre UserForm1.Caption, False
  4. 'End With
  5. UserForm1.Show
  6. End Sub


 

Code :
  1. Private Sub UserForm_Initialize()
  2. UserForm1.ProgressBar1.Max = 21
  3. Call Module1.TestAutoFill
  4. End Sub


 

Code :
  1. Sub TestAutoFill()
  2. Sheet1.Select
  3. For a = 1 To 21
  4. Cells(5, a).Select
  5. Selection.AutoFill Destination:=Range(Cells(5, a), Cells(10, a)), Type:=xlFillDefault
  6. Next a
  7. Sheet1.Range("A2" ).Select
  8. End Sub


 
http://lh6.ggpht.com/_dBFrpW44io4/SjY4dzBQmGI/AAAAAAAAAF8/9Oi8liVou7s/s800/Ctplm.jpg
 
 
 


---------------
"That kind of information doesn't just grow on trees."
Reply

Marsh Posté le 16-06-2009 à 17:44:42    

Bonjour tout le monde, un super grand merci pour vos posts. je suis désolé pour le retard.  
je revienderai vers vous demain matin pour vous dire ce qu'il en est ;)  
 
je teste .... ciao et à demain.

Reply

Marsh Posté le 17-06-2009 à 10:01:38    

Bonjour Ctplm
Bonjour produvba
 
Merci pour vos messages, en fait je suis entrain de tester vos propositions et je n'arrive pas à tout regrouper en une seul macros (les trois codes de Ctplm).  
 
j'ai essayé de créer un userform pour l'appeler par la suite avec le code a Ctplm. ensuite pendant le traitement de mon fichier (mise à jour auto des lignes "par macros) j'aimerai que le userform1 "par exemple" s'affiche... avec le progress bar comme dans le code. sauf que j'ai des  erreurs (cf lien hypertext).  
 
=> http://www.excel-pratique.com/~fil [...] _test1.xls
 
Note:  je revienderai toute à l heure pour plus d explication merci.  
 
@+  
 

Ctplm a écrit :


J'ai commenté l'affichage de l'Userform sans titlebarre car il faut du code supplémentaire. Pour la progressbar il faut faire un clic droit sur la boîte à outils dans l'userform et dans "Contrôles supplémentaires", cocher progressbar.
 
 

Code :
  1. Sub UserForm1_Activate()
  2. 'With UserForm1
  3. 'AfficheTitleBarre UserForm1.Caption, False
  4. 'End With
  5. UserForm1.Show
  6. End Sub


 

Code :
  1. Private Sub UserForm_Initialize()
  2. UserForm1.ProgressBar1.Max = 21
  3. Call Module1.TestAutoFill
  4. End Sub


 

Code :
  1. Sub TestAutoFill()
  2. Sheet1.Select
  3. For a = 1 To 21
  4. Cells(5, a).Select
  5. Selection.AutoFill Destination:=Range(Cells(5, a), Cells(10, a)), Type:=xlFillDefault
  6. Next a
  7. Sheet1.Range("A2" ).Select
  8. End Sub


 
http://lh6.ggpht.com/_dBFrpW44io4/ [...] /Ctplm.jpg
 
 
 


Reply

Marsh Posté le 17-06-2009 à 21:41:01    


Bonsoir,
 
La procédure UserForm_Initialize doit être dans l'Userform (double-clique sur l'userform dans l'éditeur pour voir son code..).
Les deux autres procédures doivent être dans Module1.
 
Dans l'ordre : Il faut lancer Userform_Activate, qui affiche l'Userform. Lors de l'initialisation de l'Userform, UserForm_Initialize se lance tout seul, ce qui appelle la procédure TestAutoFill.


---------------
"That kind of information doesn't just grow on trees."
Reply

Marsh Posté le 18-06-2009 à 17:07:49    

Bonjour à toi ;)  
 
Ok merci je teste ça et je te dirai ce qu'il en est demain.  
 
ciao @+  
 
 

Ctplm a écrit :


Bonsoir,
 
La procédure UserForm_Initialize doit être dans l'Userform (double-clique sur l'userform dans l'éditeur pour voir son code..).
Les deux autres procédures doivent être dans Module1.
 
Dans l'ordre : Il faut lancer Userform_Activate, qui affiche l'Userform. Lors de l'initialisation de l'Userform, UserForm_Initialize se lance tout seul, ce qui appelle la procédure TestAutoFill.


Reply

Sujets relatifs:

Leave a Replay

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