![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Localisation: PAPEETE
Version Excel : Excel 2003 (PC)
Messages: 248
|
Bonjour le forum,
Dans mon classeur une macro recopie les données en provenance de 12 feuilles vers une feuille "Bilan" sur les colonnes A à W. Sur les colonnes X à AN de cette meme feuille des calculs sont effectués. Je cherche à effectuer ces calculs par macro VBA, de telle facon dés qu'une ligne est ajoutée les calculs soient effectués automatiquement. Merci. |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: octobre 2006
Localisation: Caen
Version Excel : Excel XP (PC)
Messages: 583
|
Bonjour SPEA,A tu essayé avec l'éditeur de Macro ? Tes formules existent : il suffit peut-être de les copier sur une plage voulue ? Avec la colonne AA ca donne ca ! Sub AA() ' Macro enregistrée le 04/08/2007 par papapaul Range("AA2").Select Selection.Copy Range("AA2:AA50").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub Si tu connais pas, voici comment faire Outils, Macro, Nouvelle Macro click sur AA2, edition, copier, selection de AA2 appuyer sur Maj click derniere cellule de la plage voulue (ici j'ai pris AA50) edition, collage speciale, formules, outils, macro, arret de l'enregistrement. Tu peux donc faire une macro pour chaque colonne. Ensuite : Tu pourra crée un module qui fera toutes les colonnes en même temps en y mettant dedans call AA, call AB etc... Ai-je compris ta question ? Bonne journée sur XLD |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: octobre 2006
Localisation: Caen
Version Excel : Excel XP (PC)
Messages: 583
|
Tu peux aussi tout faire en même temps :Range("X2:AN2").Select Selection.Copy Range("X2:AN50").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False A la place de 50, tu mets ce que tu veux : Sur les lignes vides va apparaitre des 0 ou des #N/A ou Valeur On peut les "effacer" avec VBA mais je sais plus comment. Y a des solutions sur le forum. |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Localisation: PAPEETE
Version Excel : Excel 2003 (PC)
Messages: 248
|
En fait j'ai mis au point des formules pour calculer les colonnes X à AN et je voudrais le faire par VBA...
A la limite si on m'explique pour les premieres colonnes je peux essayer, avec mon modeste niveau, d'adapter sur les colonnes suivantes. Merci. |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 571
|
Salut SPEA,
Une petite question, pourquoi veux tu faire ça en VBA !? Une recopie des formules ne te va pas ? Sinon tu trouveras ci-dessous ton fichier avec plusieurs macros, pour la recopie de tes formules A+
__________________
Cordi@lement. La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses. ![]() VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro ! Menu -> Outils -> Macro -> Nouvelle macro ![]() Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
Dernière modification par BrunoM45 ; 04/08/2007 à 12h16. |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Version Excel : Excel 2000 (PC)
Messages: 5 956
|
bonjour SPEA
Salut Papapaul Salut Bruno solution qui rejoint celle de Bruno et pourrait satisfaire SPEA (sous condition de conserver les formules en X2:AN2) a mettre en feuille Bilan Code:
Private Sub Worksheet_Activate()
Range("X2:AN2").AutoFill Destination:=Range("X2:AN" & Range("A65536").End(xlUp).Row), Type:=xlFillDefault
End Sub
|
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: octobre 2006
Localisation: Caen
Version Excel : Excel XP (PC)
Messages: 583
|
Bonjour tous, BrunoCa c'est du vite fait bien fait. Comment t'a fait pour transformer (copier) toutes les formules en VBA aussi vite ? Modestement avec l'enregistreur de macro, toujours lui... je me suis amusé à construire ca. C'est OK Sub NBVAL() Range("E2:E5").Select Selection.FormulaR1C1 = "=COUNTA(RC[-4]:RC[-1])" Range("E2:E5").Select End Sub Sub NBSI() Range("F2:F5").Select ActiveCell.FormulaR1C1 = "=COUNTIF(RC[-5]:RC[-1],"">2"")" Range("F2:F5").Select End Sub Avec des fonctions imbriquées, pas sur du tout que je sois capable d'y arriver. Je m'interroge, si j'arrive à faire une formule compliquée du genre si(index(equiv..avec l'assistant fonction d'excel Est-il possible de transformer directement en VBA sans passer par l'enregistreur ? J'ai l'impression que tu a procéder ainsi ? Excuse si ma question te parait idiote mais j'utilise tres rarement les formules. Bonne journée à tous Soleil ![]() |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: avril 2007
Localisation: PAPEETE
Version Excel : Excel 2003 (PC)
Messages: 248
|
Bonjour Bruno, Pierrejean, le fil
Je voulais passer par des calculs en VBA notamment pour eviter que d'autres utilisateurs de ce fichier n'aient accés aux formules ou ne puissent les modifier. Mais si c'est trop complexe à mettre en oeuvre je me satisfait trés bien de la solution proposée de recopie des formules. Merci |
|
|
|
|
|
#11 (permalink) | |
|
XLDnaute Barbatruc
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 571
|
Citation:
Ce qui donne : Code:
' Recopie des formules vers le bas
Sht.Range("X2:AN" & DerLig).FillDown
Sht.Range("X2:AN" & DerLig).Copy
Sht.Range("X2:AN" & DerLig).PasteSpecial Paste:=xlPasteValues
A+
__________________
Cordi@lement. La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses. ![]() VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro ! Menu -> Outils -> Macro -> Nouvelle macro ![]() Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
|
|
|
|
|
|
|
#12 (permalink) | ||||
|
XLDnaute Barbatruc
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 571
|
Citation:
[quote]Modestement avec l'enregistreur de macro, toujours lui... je me suis amusé à construire ca. C'est OK Sub NBVAL() Range("E2:E5").Select Selection.FormulaR1C1 = "=COUNTA(RC[-4]:RC[-1])" Range("E2:E5").Select End Sub Sub NBSI() Range("F2:F5").Select ActiveCell.FormulaR1C1 = "=COUNTIF(RC[-5]:RC[-1],"">2"")" Range("F2:F5").Select End Sub Avec des fonctions imbriquées, pas sur du tout que je sois capable d'y arriver. Citation:
Et d'utiliser : FormulaLocal Après il faut éventuellement modifier tous les chifres des lignes, par une variable, et hop le tour est joué Citation:
Citation:
Une question qui paraît simple à quelqu'un, peut être très compliquée pour une autre et inversement. Bonne journées à toi, PapaPaul ![]()
__________________
Cordi@lement. La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses. ![]() VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro ! Menu -> Outils -> Macro -> Nouvelle macro ![]() Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
Dernière modification par BrunoM45 ; 04/08/2007 à 13h58. |
||||
|
|
|
||||
| ANNONCES | |||||
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| calculs automatiques | BrunoB | Forum Excel | 1 | 24/07/2006 11h43 |
| calculs distances GPS | le flemallois | Forum Excel | 6 | 03/07/2006 11h30 |
| tcd calculs | JM | Forum Excel | 0 | 24/08/2005 11h50 |
| calculs sur du texte | joel | Forum Excel Downloads - Archives | 6 | 08/02/2005 17h44 |
| Calculs de colonnes | Captain | Forum Excel Downloads - Archives | 3 | 15/08/2004 21h13 |