Macro Copie Cellules

B

Ben-Ten

Guest
bonjour,

je suis très embêté.... je ne connais pas grand chose en macro excel...

Mon problème est le suivant....

J'ai un tableau de x lignes et y colonnes....

le nombre de colonnes ne varie pas ....par contre le nombre de lignes peut augmenter ou diminuer....

Lorsque x varie donc, je dois sélectionner la première ligne de mon tableau (exemple : de C5 à J5) et recopier toutes les formules de cette ligne sur les lignes suivantes jusqu'au dernier enregistrement (qui peut de trouver par exemple en C45 ou c35 ou autre suivant où se trouve la fin du tableau).

Alors, je le fais manuellement actuellement ....cependant mon fichier comporte au moins 25 feuilles et cela devient pénible....

je voudrai donc une macro qui fasse ces copies en fonction de chaque feuille (le nombre y colonnes peut varier d'une feuille à l'autre mais pas x qui lui est le meme sur chaque feuille)....

en utilisant la fonction (ligne(c35)-ligne(c5))+1, j'arrive à avoir le nombre d'enregistrement.... mais je n'arrive pas à faire à excel une copie en fonction de la fin de mon tableau.

Je me doute que dans la macro ....il faille mettre en place un compteur du style for i=1 to le nombre d'enregistrement .... et ensuite faire une boucle qui fasse la copie ligne par ligne jusqu'à la fin....

mais je ne connais pas encore bien les syntaxes VBA pour la créer ....

Je remercie à ceux qui vont m'aider ....j'espère....

n'hésitez pas à poser des questions si j'ai pas été clair....


Merci bien ......

Ben-Ten
 
C

Cyril

Guest
Alors, au cas ou tu n'aurais pas trouve la soluce (je viens juste de voir la news ...) tu peux avoir ton n° de ligne par la ligne suivante : Selection.row (je crois que ca ne marche que lorsque la feuille de donnnées est active)

voilou.

Cyril
 
B

Ben-Ten

Guest
Bon ben merci à ceux qui m'ont répondu....

Je réponds avec un peu de retard.....

j'ai trouvé la réponse donc la voilà ...






Application.ScreenUpdating = False

'Détermination du nombre de personnes
Sheets("=STAFF=").Select
'En D1 on trouve le nombre de personnes et donc le nombre de ligne à copier
i = Range("D1").Value

'Sélection des différentes feuilles concernées pour la mise à jour

Sheets(Array("Répt°", "CalcRépt°", "ABS", "CP 1", "CP 2", "Plan", "Ptés", "Plan-ABS", "Ptés-ABS", "Quantif.", "Ec. P-P", "HISTOABS", "FinStore", "FinPlan", "=AM", "=CP", "=CE", "=AT", "=DEM", "Ec. Pos", "Ec. Neg", "TABLEAUX")).Select
Sheets("Répt°").Activate

'Copie
Sheets("HISTOABS").Activate
Set SourceRange = Range(Cells(6, 1), Cells(6, 165))
Set fillRange = Range(Cells(6, 1), Cells(i + 4, 165))
SourceRange.AutoFill Destination:=fillRange


et ainsi de suite pour les feuilles ......


voilou....

merci encore......

Ben-Ten
 
B

Ben-Ten

Guest
Salut Richard,

Y'a pas de problèmes.... seulement je pars en Week-End....
donc je te préparerai un fichier exemple dans la semaine....

mon fichier faisant environ 16 Mo .... je te ferai un exemple....

Sinon, mon principal souci était que je ne connaissais pas trop les syntaxes macro VBA. Mais je pense que je n'ai rien fais d'extraordinaire du coup sur cette macro.... Mais si çà peut t'intéresser ...pas de problèmes .... à plus

Ben-Ten
 

Discussions similaires

  • Question
Microsoft 365 Tableau
Réponses
24
Affichages
686

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2