REMPLIR CELLULE

cpsfg Messages postés 6 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 29 juin 2006 - 28 juin 2006 à 17:54
petigeni Messages postés 34 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 29 septembre 2006 - 29 juin 2006 à 11:57
Bonjour,
Petit besoin de conseil...J'ai un fichier Excel que j'alimente de nouvelles données toutes les semaines par des copier-coller. Je voudrais que pour chaque ligne, une macro exécute une formule automatiquement dans une même colonne jusqu'à la dernière ligne copiée. Pour être précis, j'ai une colonne de date, et je veux que la macro éxecute la formule Mois et Année à la fin du tableau. Voici ce que j'ai écrit :
Sub Calcul_Auto()
    For i = 1 To 10
        Worksheets("Feuil1").Cells(i, 24).Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-21]<>"""",MONTH(RC[-21],"""")"
    Next
End Sub

Problème, elle ne s'éxecute pas automatiquement, et surtout elle ne s'arrête pas à la dernière ligne remplie. Merci à ceux qui ont une solution....

3 réponses

petigeni Messages postés 34 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 29 septembre 2006
29 juin 2006 à 08:05
Salut!!!
Il m'étais arrivé la meme chose a moi, quand je copié des formules dans mes cellules  elles ne s'executaient pas, ce qui dérange pas mal!!!!
A la place d'utiliser " ActiveCell.FormulaR1C1  " utilise plutot "ActiveCell.FormulaLocal "

C'est pas trés "pratique " de parcourirs toutes t'es cellules comme cela, tu devrait plutot faire une selection et la parcourirs par la suite, voila ce que je te propose :

'variable pour stocker la plage de cellule pleine
dim plageCellulePleine as Range

'affectation des cellules pleine a la plage
set plageCellulePleine = range(celluleDepart:celluleArrivé).specialcells(xlCellTypeFormulas)
 'ex range(A1:B3) : tu récupéreras toutes les cellules avec des formules

'maintenant on parcours notre selection


dim temp as range


'parcours des plage


for each temp in plageCellulePlein


temp.formulaLocal="=IF(RC[-21]<>"""",MONTH(RC[-21],"""")"


next

j'espere avoir répondu a ton probleme.


 
0
cpsfg Messages postés 6 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 29 juin 2006
29 juin 2006 à 10:29
Salut,
Je te remercie pour la proposition. Par contre, elle ne s'éxecute pas, il y a un problème avec ce passage :

set plageCellulePleine = range(celluleDepart:celluleArrivé).specialcells(xlCellTypeFormulas)

Le debogage mentionne une erreur de syntaxe.

A voir ce que tu en penses....

Merci
0
petigeni Messages postés 34 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 29 septembre 2006
29 juin 2006 à 11:57
Dans mon précédent message j'ai fait un petit oublie,et cela se trouve je t'es fait trompé.....
En fait tu dois mettre des guillements pour spécifié la plage des cellules (moi je l'avais pas fait)
exemple :

range("A3:B4").specialcells(xlCellTypeFormulas)

Cela pourrait venir de la si tu m'a suivi sur mon erreur.

Sinon vérifie que tu as bien Declarer plageCellulePleine de type Range
dim plageCellulePleine  as Range

sinon je te donne l'adresse d'un petit pdf qui explique des choses intéréssante sur excel et vba, c'est cela que j'utilise, car je me suis mis y'a peu de temps a vba excel.

ftp://ftp2.developpez.be/developps/vb/VB-excel2.pdf
0
Rejoignez-nous