Calculs élaborés avec Excel - VB/VBA/VBS - Programmation
Marsh Posté le 05-02-2009 à 10:56:57
Tu veux un cours d'Excel en gros si j'ai bien saisi...
On réalise ce genre de chose, avec des conditions 'SI' essentiellement...
Maintenant il est possible de faire des choses très complexes.
Un point essentiel, reste à poser clairement et définir clairement ce que tu veux faire, de manière à ce que la transcription en formule devienne évidente.
Qq site pour débuter, et même pour aller bcp plus loin :
Utilisation des fonctions Excel dans VBA
Excel - nouvelles fonctions
FAQ MS-Excel - Club d'entraide des développeurs francophones
Marsh Posté le 05-02-2009 à 11:39:41
Merci Ptit loup.
Donc si j'ai bien compris tous ces calculs complexes doivent s'écrire avec VBA. Et je peux déclencher ces actions en cliquant sur un bouton. C'est bien ça? Pcq c'est VBA que je ne connais pas encore. Je ne comprends pas bien comment on lance ces actions. Est-ce qu'elles se lancent avec des macros, automatiquement?
Marsh Posté le 05-02-2009 à 12:06:03
Non non... plein de calculs complexes peuvent être écrits avec les fonctions... mais bon, que te dire de plus que l'aide Excel... ?
le si fonctionne ainsi : Si (condition, valeur si oui, valeur si faux); donc rien de très dur à comprendre... maintenant il existe plein d'autres fonctions qui te serviront... il faut être curieux et regarder dans les fonctions d'Excel... je n'ai pas vraiment d'autre conseil.
Sinon, oui, le VBA peut être déclenché par un bouton qui lance en fait la macro.
Marsh Posté le 05-02-2009 à 13:01:13
bingojm a écrit : Bonjour à tous, |
Salut,
Tu es assez flou dans ce que tu veux calculer précisément.Comme le dit Ptit loup, pas besoin nécessairement de VBA.Pour ce qui est du message d'alerte par exemple,tu peux aller jeter un oeil dans Données/Validation.Pour ce qui est du nombre de Et de oui, impossible de le faire directement.C'est comme additionner des torchons et des serviettes.Il suffit à mon avis d'ajouter une colonne et de mettre une formule si=oui, alors 1....
Marsh Posté le 05-02-2009 à 13:24:21
Bonjour,
Je me perds un peu dans le forum, mais bon le sujet traite de VBA et d'excel donc je vais supposer que je suis au bon endroit ! (quoique !)
J'ai un souci, j'ai un code VBA qui est sensé me sommer par la couleur.
Eh bien je ne sais pas comment le faire tourner (Le compiler ?), quoiqu'il en soit, j'ai enregistré une macro, je l'ai stoppé puis j'ai cliqué sur modifier, la je colle le code ... et ensuite ... comment faire tourner le code, quelle étape me manque t'il pour avoir la somme en bas de ma colone !
Dslè si je squatte un sujet, mais je ne c pas trop utiliser le forum, d'ailleurs je suis aussi preneur d'un tuto pour cela,
Merci,
Tétèv
Marsh Posté le 05-02-2009 à 13:33:58
Euh, mdr, au passage je pense que je peut, peut être t'aider Bingo JM, mais le tout est assez flou !
Pour ce qui est des formules :
ex :
si en Colonne pour Garage on va dire tu es en A1, Salon A2 ...
Tu sera en B pour la valeur correspondante :
A B
1 Garage 2
2 Salon 2
X ... ...
Total d'élement"=somme(B1;Bx)"
Total de oui : je ne sait pas trop mais une astuce peut etre, tu utilise un 1 et un 0 (1 pour oui et 0 pour non)
ex : dans la cellule juste à coté de la réponse tu tapes, mettons si ta réponse est en B10, tu tapes dans B11 =si(b10:"oui";1;0" )
et tu somme le tout, que tu somme avec ta précédente somme
Si dans une tu as dépasser 4 pièces tu écrit un Si avec un >4 = "erreur" !
Marsh Posté le 05-02-2009 à 14:08:20
Je corrige ce qui as été dit... on peut facilement sommer le nb de oui, et l'ajouter au nb de pièces...
Si par exemple dans la plage A1:A6, on a des nombres, ainsi que des oui/non, on peut compter la somme des nb ainsi que le nb de oui:
=SOMME(A1:A6)+NB.SI(A1:A6;"oui" )
Marsh Posté le 05-02-2009 à 19:27:08
re
je l'avais oublié celle là, cool !
merci ptit loup
quelqu'un pour mon pb vba ?
Marsh Posté le 07-02-2009 à 02:03:44
Bonjour Ptit loup,
Voici un peu mon pb :
Situation voulue : lancer ma macro vba
Problème observée : après avoir collée mon code dans Microsoft Visual Basic, je ne sait pas ou cliquer pour que la macro soit enregistrée ...
je suis certain que ce n'est pas compliqué, j'ai cherché ...(exécuter subform, compiler (normalement on compile un code) ... enregistré ... rien n'y fait l'éditeur ne se ferme pas !
Des fois je ferme en pensant que le code est enregistré et que je peut faire tourner mon progamme, mais aucun résultat n 'apparait !
J'espère être assez clair en fait, je ne c pas quoi faire après avoir collé mon code dans l'éditeur (le code est correct !)
Merci pour l'attention !
Tétèv !
Marsh Posté le 07-02-2009 à 12:29:01
Je suis tout débutant, mais ça je pense que j'ai compris... tu fermes simplement l'éditeur!
Normalement, avant d'avoir écrit ton code, tu as créer un nouveau module, et écrit ton code dans celui-ci.
Ensuite tu fermes l'éditeur, puis tu lances ta macro (c'est peut-etre ca que tu ne faisais pas)...
Marsh Posté le 07-02-2009 à 15:47:25
Up !
Salut Bingojm,
J'ai fermé mon éditeur, je me retrouve sur mon classeur .xls, après un alt F8 je ne voit que mes anciennes requêtes enregistrées, rien sur le code vba qui vient d'être fermé ...
J'en profite pour faire un up ...
De mon coté je vais utiliser cet après midi pour continuer à chercher ... pour enfin pouvoir commencer à écrire d'autres codes!
Merci bingojm en tout cas !
Up !
Tétèv !
Marsh Posté le 07-02-2009 à 15:49:48
au passage voici le code :
Function SumByColor(PlageEntree As Range, CouleurPlage As Range) As Double
Dim Cell As Range, TempSum As Double, ColorIndex As Integer
ColorIndex = CouleurPlage.Cells(1, 1).Interior.ColorIndex
TempSum = 0
On Error Resume Next
For Each Cell In PlageEntree.Cells
If Cell.Formula <> "" Then
If Cell.Interior.ColorIndex = ColorIndex Then TempSum = TempSum + _
Cell.Value
End If
Next Cell
On Error GoTo 0
Set Cell = Nothing
SumByColor = TempSum
End Function
' modifiemenucontextuel Macro
' Macro enregistrée le 05/02/2009 par téva
'
' Touche de raccourci du clavier: Ctrl+m
'
End Function
Marsh Posté le 07-02-2009 à 15:59:39
si tu ne vois rien en faisant alt F8 c'est que tu n"as pas créé de macro!
Pour en créer une, tu ouvres VBA et tu fais insérer > module.
Une fois ton code macro écrit, tu fermes l'éditeur et là, si tu fais altF8, tu le verras
Marsh Posté le 07-02-2009 à 16:21:38
RE,
après un altF11, je vais dans inserer > module, je colle la macro, je ferme l'éditeur, je fait un alt F8 pour vérifier ... rien concernant cette macro !
Marsh Posté le 07-02-2009 à 16:49:42
Je viens de découvrir quelque chose, lorsque je sélectionne toutes les feuilles du classeur > CLIC droit > visualiser les codes, parmi les codes présents se trouve celui là, mais je ne le vois pas dans altF8 ... de plus aucune somme n'est affichée ...
Je vais chercher feuilles par feuilles (il y a en 18) pour voir si le code n'est pas enregistré sur l'une d'entre elles !
Merci pour ton aide bingojm,
merci aussi ptitLoup pour tes messages précédents sur "Excel : vos questions et astuces
Marsh Posté le 07-02-2009 à 16:55:41
Bon ... je vais enfin pouvoir être un petit peu plus spécifique :
Sur une des feuilles (probablement parceque j'étais sur elle lors de la création du code) se situe mon code (sur l'onglet clic droit visualiser le code) ! par contre aucune trace de l'opération demandé, ni aucune trace du code dans altF8 !
Marsh Posté le 07-02-2009 à 16:56:06
Normalement qd tu es dans VBA, tu as un cadre en haut à gauche et tu vois tes feuilles, tes modules etc. Et tes modules sont présents pour toutes les feuilles, donc ca devrait aller!
cela dit, j'utilise office 2007, mais je ne pense pas que ca soit différent d'avant
Marsh Posté le 07-02-2009 à 16:58:35
non je crois savoir...
Tu dois avoir mal ecrit ta macro (dans module)!
Tu dois commencer par :
sub nomdetamacro()
...
End sub
Marsh Posté le 07-02-2009 à 17:04:56
Bingojm,
GRAND GRAND GRAND GRAND GRAND MERCI
ça y est elle est dans mon altF8, j'ai pas vérifié si elle tournait (parce que le pb viendrait du code et ça c autre chose)
Merci beaucoup encore !!
Marsh Posté le 07-02-2009 à 17:12:18
erreur de compilation end sub attendu Sub sumcolor()
ok j'ai compris il faut mettre le end sub juste en dessous du sub
c un peu différent de l'algo tout compte fait ou l'on mets les "fin" à la fin
c cool, le code fonctionne, maintenant il faut je lui fasse faire les différences entre les couleurs ...
encore merci à tous !
MON PB EST RESOLU
Marsh Posté le 07-02-2009 à 17:15:08
quel est ton code dans ton module et qd tu fais un débogage il doit te dire quelle ligne pose problème
Marsh Posté le 07-02-2009 à 17:16:49
ca vient d'où ce début de code: "Erreur de compilation..."
Ca doit commencer par sub
Marsh Posté le 07-02-2009 à 17:20:07
non c moi qui ai fait un copié du pop up d'aide de vba que j'ai collé dans le message précédent juste avant le code pour expliquer le pb, en fait j'avais mis le end sub tout à la fin du code, après le end function, et apparement il fallait que je le mette juste après le sub ....
tout fonctionne comme sur des roulettes !
Marsh Posté le 07-02-2009 à 17:20:22
ok. j'avais pas vu ta réponse.
voilà qui est parfait. bonne chance pour la suite
Marsh Posté le 04-02-2009 à 22:00:58
Bonjour à tous,
Je voudrais créer un formulaire dans Excel (ça je sais faire), mais je voudrais créer des conditions d'addition et de calculs une fois le formulaire rempli.
Je ne maîtrise guère Excel à ce niveau là, alors avec quoi puis-je créer ces formules et leurs conditions? Visual Basic? Si oui, connaissez-vous un bon site clair pour débutant qui expiquerait comment réaliser des calculs avec conditions et afficher les réponses adaptées à ces conditions?
J'espère que je suis clair... :s
Ex:
Garage: 1
Salon: 2
Chambre: 5
Y a-t-il un jardin: oui
Y a-t-il une piscine: non
...
Total d'éléments: ???
Je voudrais par exemple additionner le total des pièces ET de oui! Mais aussi limiter, par exemple, le nombre de pièces à l'étage à 4 (même si on a écrit 5) et encore mieux, qu'un message s'affiche dans une cellule définie si on a dépassé les 4 pièces par exemple...
Il y a une infinité de choses à réaliser en ce sens, mais avec quoi réalise-t-on ce genre de choses dans Excel?
Merci d'avance
Message édité par bingojm le 04-02-2009 à 22:01:21