ecrire un code en VBA

  • Initiateur de la discussion Jean Marc
  • Date de début
J

Jean Marc

Guest
Bonjour le forum

je commence a comprendre VBA mé pas encore a l'écrire !!!

je souhaiterais pouvoir écrire en VBA ceci :

Ranger en D1 sur ma feuille 'synthèse' la somme de la colonne C (à partir de le lgne 7 jusque la fin de la colonne (fin inconnue)) de la feuille 'mafeuille'
Idem en F1 la somme de ma colonne D

merci par avance a celui ou celle qui m'apportera son aide

JM
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Jean Marc, le Forum

Je prends ta question pour un exercice VBA, car dans l'absolu on ne ferait pas entrer en jeu une macro pour faire ce que n'importe quelle Fonction de Base est capable de faire nativement sous Excel.

Mais bon pour le Fun de l'exercice voici une méthode basic par boucle sur chaque cellule. Je me suis efforcé de mettre des noms de Variable clairs et explicites.

Sub Calculator()
Dim WSBase As Worksheet
Dim PlageBase As Range
Dim WSWork As Worksheet
Dim TheSummD1 As Double
Dim TheSummF1 As Double
Dim Cell As Range

   
Set WSBase = Sheets('Synthese')
   
Set WSWork = Sheets('MaFeuille')

       
With WSBase
           
Set PlageBase = .Range('C7:C' & .Range('C65536').End(xlUp).Row)
       
End With

       
For Each Cell In PlageBase
           
If IsNumeric(Cell.Value) Then TheSummD1 = TheSummD1 + Cell.Value
           
If IsNumeric(Cell.Offset(0, 1).Value) Then TheSummF1 = TheSummF1 + Cell.Offset(0, 1).Value
       
Next

       
With WSWork
            .Range('D1') = TheSummD1
            .Range('F1') = TheSummF1
       
End With

End Sub


On notera que pour la Variable TheSummF1, je reste dans la même boucle mais j'invoque la Propriété 'Offset' afin de 'Scanner' dans la foulée (après la Colonne 'C') aussi la Colonne 'D' de la Feuille 'Synthese' (WSBase)... Pour t'aider à comprendre cette Méthode :

MsgBox Range('A1').Offset(0, 1)

Signifie que je parle de la cellule 'B1' (Décaler : 0 ligne / 1 Colonne)

Voilà, pour le reste, c'est une boucle basic, avec un test si la valeur est numérique et donc des déclaration d'Objets WorkSheets et Range.

Une autre approche consisterait en VBA à faire ceci :

Sub CalculatorFunction()
Dim WSBase As Worksheet
Dim WSWork As Worksheet
Dim PlageBaseD1 As Range
Dim PlageBaseF1 As Range

   
Set WSBase = Sheets('Synthese')
   
Set WSWork = Sheets('MaFeuille')

       
With WSBase
           
Set PlageBaseD1 = .Range('C7:C' & .Range('C65536').End(xlUp).Row)
           
Set PlageBaseF1 = .Range('D7:D' & .Range('D65536').End(xlUp).Row)
           
       
End With

       
With WSWork
            .Range('D1') = Application.WorksheetFunction.Sum(PlageBaseD1)
            .Range('F1') = Application.WorksheetFunction.Sum(PlageBaseF1)
       
End With

End Sub

Ici quenéni boucle, mais directement des Fonction Excel comprises par VBA.

Bon Après Midi
@+Thierry

EDITION !!!

Sbinz de Mise en Page avec Smiley dans le Code !! lol

Message édité par: _Thierry, à: 11/04/2005 14:38
 
J

Jean Marc

Guest
Bonjour Thierry, re le forum

ben quoi dire ??? sinon merci

je vé prendre un cachet et mettre ça en place ! :)
je l'ai demandé en VBA car je dois mettre ces infos a l'intérier d'un code existant

merci encore et très bonne journée

JM
 

Discussions similaires

Réponses
21
Affichages
576
Réponses
5
Affichages
291

Statistiques des forums

Discussions
313 030
Messages
2 094 572
Membres
106 054
dernier inscrit
Mohajer