Etirer la formule de plusieurs lignes jusqu'en bas de mon tableau

Etirer la formule de plusieurs lignes jusqu'en bas de mon tableau - VB/VBA/VBS - Programmation

Marsh Posté le 28-08-2013 à 10:48:49    

Bonjour le forum!
 
Je vous expose mon problème:
J'ai un tableau excel avec des données qui sont collées avec une macro. Les dernière colonnes de mon tableau sont des formules que j'étire à la main, et j'aimerais que la macro le fasse à ma place.
J'ai déclaré des variables car mon nombre de ligne change dès que la macro colle les données (une fois par mois).
J'ai adapté le code que j'ai obtenu grâce à l'enregistreur avec mes variables, mais ça ne fonctionne pas.
 
Ci dessous le code "manuel" :
 

Code :
  1. Range("AO39178" ).Select
  2.     Range(Selection, Selection.End(xlToRight)).Select
  3.     Selection.AutoFill Destination:=Range("AO39178:CK39834" )
  4.     Range("AO39178:CK39834" ).Select


 
Et voici mon code adapté qui ne fonctionne pas à cause des Range("variables" ) :
 

Code :
  1. Range("AO3" ).End(xlDown).Select
  2.     Set cell1 = ActiveCell
  3.    
  4.     Range("A3" ).End(xlDown).Select
  5.     ActiveCell.Offset(0, 88).Select
  6.     Set cell2 = ActiveCell
  7.     cell1.Select
  8.     Range(Selection, Selection.End(xlToRight)).Select
  9.     Selection.AutoFill Destination:=cell1: cell2 , Type:= _
  10.         xlFillDefault
  11.     Range("cell1:cell2" ).Select


 
Merci par avance à tous!

Reply

Marsh Posté le 28-08-2013 à 10:48:49   

Reply

Marsh Posté le 28-08-2013 à 12:12:12    

 
           Bonjour,
 
           " mais ça ne fonctionne pas " ?   Oui mais encore ?  Sans explication claire …
 
           Sinon retirer tous ces affreux  .Select  inutiles et source de ralentissement et voir même de problème ‼
 
           Ligne n° 4 :   A3 ?
 
           Ligne n°10 :  lire l'aide et l'exemple de la méthode  AutoFill  ne ferait pas de mal notamment pour son argument Destination
   
           Ligne n°12 :  aberrante ‼   Les guillemets servent à encadrer du texte, non ?!


Message édité par Marc L le 28-08-2013 à 12:14:34
Reply

Marsh Posté le 28-08-2013 à 14:12:51    

C'est justement ces variables qui ne fonctionnent pas puisque les guillemets ne servent pas à les encadrer.
 

Reply

Marsh Posté le 29-08-2013 à 13:46:25    

Bon et bien pour ceux que ça intéressent, j'ai résolu mon problème.
Voilà le code qui fonctionne :
 

Code :
  1. Dim NbLignes
  2.     NbLignes = ActiveSheet.UsedRange.Rows.Count
  3.    
  4.     Range("AO3:CL3" ).Select
  5.     selection.AutoFill Destination:=Range("AO3:CL" & NbLignes), Type:=xlFillDefault
  6.     Range("AO3:CL" & NbLignes).Select

Reply

Marsh Posté le 30-08-2013 à 09:42:54    

 
           Bien mais ce serait bien mieux sans .Select
 
           Mais NbLignes est faux si la première ligne utilisée n'est pas la première de la feuille …


Message édité par Marc L le 30-08-2013 à 11:07:06
Reply

Marsh Posté le 02-09-2013 à 11:43:12    

Il faudrait mettre activate à la place de select?
 
Je ne comprends l'erreur dans NbLignes

Reply

Marsh Posté le 02-09-2013 à 12:53:41    

 
           Nan !
 
           Toujours associer directement la méthode à l'objet :   Range("AO3:CL3" ).AutoFill
 
 
           Sinon à partir d'un classeur vierge, saisir une donnée en K11 puis une autre en P20 :  NbLignes sera à 10 et non pas à 20 …
 
           Pas de souci donc avec NbLignes si la première ligne utilisée est bien la ligne n°1 de la feuille, sinon …


Message édité par Marc L le 02-09-2013 à 12:56:05
Reply

Marsh Posté le 06-09-2013 à 11:10:41    

Merci pour le conseil sur le .Select qui se répète avec le Selection; je ne savais pas qu'on pouvait tout coller afin d'éliminer les lignes superflues

Reply

Marsh Posté le 06-09-2013 à 11:24:46    

 
           Ton code se résume donc ainsi sans souci du nombre de lignes :

Code :
  1.     With ActiveSheet.UsedRange
  2.         [AO3:CL3].AutoFill Range("AO3:CL" & .Rows(.Rows.Count).Row)
  3.     End With


Reply

Marsh Posté le 09-09-2013 à 16:52:25    

Merci pour ton aide Marc!  :hello:

Reply

Sujets relatifs:

Leave a Replay

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