|
|
|
|
Posté par
PTK1210, le lundi 13 août 2007 à 18:00:16Configuration: Windows XP Internet Explorer 6.0
Bonjour,
Exemple :
Sub CreerSomme()
Dim Formule As String, Adresse As Long
' Somme de la colonne de [ C2 à Cx ] ou x est inconnu
'
Adresse = Range("C2:C65536").End(xlDown).Row
Formule = "=SUM(C2:C" & (Adresse - 1) & ")"
Range("C" & Adresse).Value = Formule
End Sub
'
Lupin |
Déjà merci pour ta réponse, mais cela ne marche pas trop :(
En fait cela ne fait rien... Est ce qu'il faut que je remplace formule par la formule que je veux, à savoir sumsi ? D'ailleurs, je voudrais faire une somme en fonction de ce qui est écrit dans des cellules d'une autre colonne, et je ne retrouve pas cela dans ton code ??? J'ai essayé de travailler dessus de mon côté, mais je galère pas mal, notament parce que je n'arrive pas à sélecitonner la bonne plage de cellule. Voilà le début de mon code: Sub AAA() Dim Formule As String Dim Ad1 As Long, Ad2 As Long ' Sélection des plages de cellules voulues Ad1 = Range(ActiveCell, ActiveCell.End(xlUp)).Select End Sub Cela sélectionne les cellules jusqu'en haut de mon tableau ce qui est bon mais j'aimerais que cela ne prenne pas la cellule active mais à partir de celle du dessus... Ensuite mon autre problème: je n'arrive pas à sélectionner la même plage sur la colonne en M. Je n'arrive pas à déplacer mes cellules vers cette colonne. Aucun code ne marche... Voilà après je pourrais faire le Sumsi, mais c'est pas gagné :) MErci beaucoup |
re :
Bonne idée d'avancer pas à pas :-)
Sub AAA()
Dim Formule As String
Dim Ad1 As Long, Ad2 As Long
Dim Plage As Range
' Sélection des plages de cellules voulues
Ad1 = Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp)).Select
' ou encore
'Set Plage = Range(ActiveCell.Offset(-1, 0), ActiveCell.End(xlUp))
'Plage.Select
End Sub
'
Lupin |
Merci encore pour la réponse, grâce à elle,j'ai pu progresser, et je pense être pas loin de la fin :)
Voilà la suite de mon programme: Sub Somme_Tx_Obso() Dim Formule As String Dim Ad1 As Long, Ad2 As Long Dim Cc1 As Range, Cc2 As Range Dim Nbr As String 'Pour savoir où se trouve la colonne comportant les conditions Nbr = InputBox("A combien de colonne est M?") ' Sélection des plages de cellules voulues Set Cc1 = ActiveCell Set Cc2 = ActiveCell.Offset(-1, Nbr) Ad1 = Range(Cc1.Offset(-1, 0), Cc1.End(xlUp)).Select Ad2 = Range(Cc2, Cc2.End(xlUp)).Select 'Application de la somme sur les cellules Formule = "=SUMIF(Ad2,<>à suivre,Ad1)" 'Cc1.Select.Value = Formule End Sub Maintenant il me reste à résoudre le problème de la formule. Tout d'abord je ne sais pas si j'ai bien appliquer le SUMIF, et je n'arrive pas à ce que le programme écrive ma formule dans le cellule Cc1 que j'ai mémorisé ... Merci encore une fois pour ta préciseuse aide :) Sinon j'ai une autre question annexe, si ce n'est pas trop long, comment marche Range ? De formation Java, je me dis qu'il sagit d'une classe avec ces méthodes, mais je ne comprends pas son fonctionnement... je pense d'ailleurs que je ne comprends pas tout à fait le fonctionnement global de VBA, mais j'essaie de m'y filer :) Si c'est trop long, ne te prends pas la tête. A plus :) PTK1210 |
Bonjour,
Alors voici la suite, je ne vois pas encore toute la structure de la feuille, mais enfin je te fournit du code pour cheminer dans cette approche.
Sub Somme_Tx_Obso()
Dim Formule As String
Dim Ad1 As String, Ad2 As String
Dim Cc1 As Range, Cc2 As Range
Dim Nbr As Long
'Pour savoir où se trouve la colonne comportant les conditions
'Nbr = InputBox("A combien de colonne est M?")
' Si tu possède des entête de colonne,
' tu peux trouver la colonne recherché avec le mot de l'entête
'Nbr = [A1:M1].Find("Mot_Clé").Column
Nbr = [A1:X1].Find("Critères").Column
'Range("A1").Column
Range("A2").Select
' Sélection des plages de cellules voulues
Set Cc1 = ActiveCell.Offset(0, 0)
' .Offset(0, 0) est implicite, mais plus détaillé pour la compréhension
Set Cc2 = ActiveCell.Offset(-1, Nbr)
Ad1 = Range(Cc1.Offset(-1, 0), Cc1.End(xlUp)).Address
Ad2 = Range(Cc2, Cc2.End(xlUp)).Address
DoEvents ' Faire évènement -> Utiliser pour point d'arrêt en mode debug
'Application de la somme sur les cellules
Formule = "=SUMIF(" & Ad2 & "," & Ad1 & ")"
Cc1.Value = Formule
End Sub
'
Pour ce qui est du mot clé [ Range ]. Bien entendu, dans mes propres mots : L'objet Range permet de cibler un plage de cellules de une cellules à plusieurs cellules, que celle-ci soit contigu ou pas. Pour balayer un plage de cellule, on utilise souvent l'objet range, surtout si celles-ci ne sont pas contigu. Exemple, supposons qu'a l'aide de la souris tu sélectionne plusieurs cellule non contigu, on procède ainsi :
Dim Plage as Range, Cellule as Range
Set Plage = Selection
For each Cellule in Plage
Msgbox Cellule.Value & vbLf & Cellule.FormulaR1C1
Next Cellule
donc, quand tu rencontre le mot Range, il faut penser " Plage de cellule(s)" Cordialement Michel |
Grâce à tes conseils, j'ai pu finir ma macro. Enfin, pour l'instant, elle satisfait mes besoins, ce qui représente un bon gain de temps :)
Voilà mon code final. J'ai pris en compte pas mal de tes conseils :) Sub Somme_Tx_Obso()
Dim Formule As String
Dim Ad1 As String, Ad2 As String
Dim Cc1 As Range, Cc2 As Range
Dim Nbr As Long
'Pour savoir où se trouve la colonne comportant les conditions
'Nbr = InputBox("A combien de colonne est M?")
Nbr = ([A9:Z9].Find("Rmq").Column)
' Sélection des plages de cellules voulues
Set Cc1 = ActiveCell
Set Cc2 = ActiveCell.Offset(-1, (Nbr - Cc1.Column))
Ad1 = Range(Cc1.Offset(-1, 0), Cc1.End(xlUp)).Address
Ad2 = Range(Cc2, Cc2.End(xlUp)).Address
'Application de la somme sur les cellules
Formule = "=SUMIF(" & Ad2 & ",""<>à suivre""," & Ad1 & ")"
Cc1.Value = Formule
Cc1.Font.Bold = True
Cc1.Font.Italic = True
End Sub
En plus grâce à ta formule de recherche de colonne, presque tout est automatique, c'est génial !! Merci beaucoup pour ton aide :) Juste une dernière chose pour abuser jusqu'au bout :) Est ce que tu connaîtrais un bon site qui recense une bonne part des méthodes sous VBA, je compléterai ma formation :) Cordialement Patrick PTK1210 |
Bonjour,
Heureux de voir qui mon aide ait pu te servir, c'est toujours gratifiant de savoir que ça sert. Pour ce qui est de site, je te recommande sans hésitation celui-ci : http://www.excelabo.net/ Tu y trouveras de tout, des exemples tout fait, des astuces, et bien d'autres. Il y a aussi celui-ci : http://www.excel-downloads.com/ et tu pourra trouver sur celui-ci un classeur que j'ai publié [ repère VizioXLA ]. http://www.excel-downloads.com/telechargements/utilitaires/5-4.htm bien sur, il n'est pas parfait, car j'apprends tous les jours et je n'ai jamais fait de mise à jour depuis sa publication. Toutefois, celui-ci démontre comment jouer avec les objets Excel. Cordialement Lupin
|
| 27/02 15h12 | [Linux] Installer les programmes (gestion des paquets, compil) | Linux |
| 04/09 11h17 | [Vidéo] Vidéo à l'envers | Vidéo |
| 26/05 14h41 | Partitionner un disque dur | Formatage |
| 03/06 16h22 | Se prémunir des virus et autres saletés ?? pas si compliqué :-) | Sécurité |
| 12/04 17h45 | ImageMagick - Manipuler les images en ligne de commande | Infographie |
| 31/01 22h17 | [VBA/excel] somme de cellule | 1 |
| 20/02 15h54 | EXCEL Somme jusqu'à la première cellule vide | 5 |
| 28/05 09h25 | [VBA] Détection cellule vide | 6 |
| 06/02 11h42 | [VBA Excel] cellule vide | 13 |
![]() | MTV Video Converter - Le programme MTV Video Converter est un convertisseur vidéo vers le format MTV acceptant les formats d'entrée suivants : ... | Catégorie: Conversion Licence: Freeware/gratuit |
![]() | WinAVI Video Capture - WinAVI Video Capture peut capturer vos films en provenance de périphériques AV comme un magnétoscope, un camescope ou une... | Catégorie: Edition vidéo Licence: Freeware/gratuit |
![]() | PSP Video 9 - PSP Video 9 est un outil de conversion gratuit permettant de convertir des fichiers vidéo (avi, divx, mpeg, etc.) au formats... | Catégorie: Edition vidéo Licence: Freeware/gratuit |
![]() | PS3 Video 9 - PS3 Video 9 est un outil de conversion gratuit permettant de convertir des fichiers vidéo (avi, divx, mpeg, etc.) au formats... | Catégorie: Edition vidéo Licence: Freeware/gratuit |
![]() | Splinter Cell | Catégorie: Jeu vidéo Gamecube | 9.00 € Micromania |
![]() | Superman Returns: The Videogame | Catégorie: Jeu vidéo Gameboy Advance | 5.00 € Micromania |
![]() | Splinter Cell : Pandora | Catégorie: Jeu vidéo Xbox | 5.00 € Micromania |
![]() | ASUS Eee PC 900 | Catégorie: Ordinateur portable | 343.90 € La Boutique Du Net |