[Catégorie modifiée .Net --> VBA] Faire des calculs sous VBA avec Excel 2007

Résolu
kikinou765 Messages postés 22 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010 - 1 juil. 2010 à 11:52
jordane45 Messages postés 36381 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 - 6 juil. 2010 à 15:10
Bonjour à tous,

je cherche à créer un outil rapide pour faire des petits calculs sous VBA avec excel 2007.

l'exemple de calcul :

consommation*distance*facteur d'émission

Ce que je souhaite, c'est que l'utilisateur rentre ces informations de type string dans une feuille excel et qu'ensuite le resultat soit stocké dans la même feuille excel et que le résultat apparaisse avec une message box.

Quelqu'un peut-il m'aider?

J'y connais absolument rien en VBA, surtout la synthaxe.

28 réponses

kikinou765 Messages postés 22 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
2 juil. 2010 à 11:07
re c'est de nouveau moi

j'ai essayer dans le workbook_open d'effacer la feuille dès le départ pour en avoir une vierge


Private Sub workbook_open()

Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select


ActiveWorkbook.Sheets(1).Range("C10").Value = "TOTO"

End Sub


le toto s'affiche bien mais ça n'efface pas le reste sur la feuille
0
kikinou765 Messages postés 22 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
2 juil. 2010 à 11:24
merci
0
kikinou765 Messages postés 22 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
6 juil. 2010 à 09:02
bonjour Jordane,

j'ai de nouveau un problème dans mon code VBA

je voudrais faire apparaître directement un bouton "Calculer" dès le démarrage du code avec une macro directement affectée à ce dernier, comment je peux faire?

ensuite, j'ai déjà mis un :

Sheets(1).Cells.Clear pour effacer tout de la feuille et avoir une feuille vierge mais ça n'efface pas les objets comme les boutons, comment je peux faire également??

merci d'avance
0
kikinou765 Messages postés 22 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
6 juil. 2010 à 14:09
nikel

j'ai du le bidouiller mais ca fonctionne

par contre aurais tu quelque chose pour effacer un code sur une feuille dans le developpeur VBA?


Sub CréerBouton()

Dim Obj As Object
Dim Code As String

Sheets("Feuil1").Select

'crée le bouton
Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=400, Top:=100, Width:=100, Height:=35)
Obj.Name = "BoutonTest"
'texte du bouton
ActiveSheet.OLEObjects(1).Object.Caption = "Tester le bouton"

'Le texte de la macro
Code = "Sub BoutonTest_Click()" & vbCrLf
Code = Code & "Call Tester" & vbCrLf
Code = Code & "End Sub"
'Ajoute la macro en fin de module feuille
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.insertlines .CountOfLines + 1, Code
End With
End Sub

j'ai ce code pour créer le bouton qui l'inscrit dans la feuille de code Feuill 1

sauf qu'il reste. On peut le virer au démarrage ça aussi ou pas??

et enfin, comment tu fais pour créer le nombre de feuille que tu veux avec le nom de la feuille désiré?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 36381 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
6 juil. 2010 à 14:24
re,

pour répondre à ta question, je t'invite à lire ceci :
Manipuler l'editeur de macro par macro

tu as un exemple qui correspond à tes besoins :
Supprimer une macro précise nommée "Macro1" dans le "Module3".

Sub test()
    'Nécéssite d'activer la référence
    '"Visual basic For Application Extensibility 5.3"
    '
    Dim Wb As Workbook
    
    Set Wb = Workbooks("Classeur1.xls")
    SupprimerMacroPrecise Wb, "Module3", "Macro1"

    'Un autre exemple pour supprimer un procédure évènementielle
    'SupprimerMacroPrecise Wb, "ThisWorkbook", "Workbook_Open"

End Sub


Sub SupprimerMacroPrecise(Wb As Workbook, Mdl As String, NomMacro As String)
    Dim Debut As Integer, Lignes As Integer
    
    With Wb.VBProject.VBComponents(Mdl).CodeModule
        Debut = .ProcStartLine(NomMacro, 0)
        Lignes = .ProcCountLines(NomMacro, 0)
        .DeleteLines Debut, Lignes
    End With
End Sub



A adapter selon tes besoins bien entendu


PS: Si je peux me permettre, il est conseillé de créer un nouveau sujet dans le forum pour chaque nouvelle question. Tu auras plus de chances que des gens vienne la lire et y réponde. Cela permet aussi au personnes qui rencontreraient les même problèmes que toi d'y trouver la réponse plus facilement que de devoir lire tout un sujet avec diverses questions.

Après, rien ne t'empêche de m'envoyer un MP si tu souhaites que j'y réponde moi-même ^^

@+
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
jordane45 Messages postés 36381 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
6 juil. 2010 à 14:29
Bonjour,
comment tu fais pour créer le nombre de feuille que tu veux avec le nom de la feuille désiré?

Pour ça, rien de plus simple.

Pour ajouter une feuille au classeur actif :
        ActiveWorkbook.sheets.add


puis pour la nommer :
        ActiveSheet.name = "Nom_de_ma_Feuille"


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0
kikinou765 Messages postés 22 Date d'inscription jeudi 1 juillet 2010 Statut Membre Dernière intervention 7 juillet 2010
6 juil. 2010 à 14:55
re,

en fait je voudrais virer toutes les feuilles et en créé de nouvelles donc pour la création c'est bon mais pour tte les virer c'est comment?? g rien trouver sur les forums
0
jordane45 Messages postés 36381 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 octobre 2022 347
6 juil. 2010 à 15:10
re,

Tu dois obligatoirement garder au moins 1 Feuille;
Ensuite pour les effacer tu peux faire une boucle du genre

Sub suppr_Feuilles()
'compte le nombre de feuilles dans le classeur actif
Nb_Feuilles = ActiveWorkbook.Sheets.Count
'boucle sur les feuilles pour les supprimer (sauf la dernière)
For i = 1 To Nb_Feuilles - 1 'de la feuille 1 à nb -1
    Application.DisplayAlerts = False 'ne pas afficher les message d'erreur
    Sheets(i).Delete ' Suppression de la feuille numéro i
    Application.DisplayAlerts = True 're-activer les messages d'erreur
Next

End Sub


Et je prends les devant :
Au cas où tu voudrais tester si une feuille existe... :
( Par exemple la feuille nommée : "Feuil1" )

Sub Tester_existence_Feuille()
FE = FExist("Feuil1")
End Sub
Function FExist(NomF As String) As Boolean ' test si la feuille existe
' NomF => Nom de la feuille à tester
' La fonction Retourne Vrai si elle existe, sinon Faux
Application.ScreenUpdating = False
On Error Resume Next
FExist = Not Sheets(NomF) Is Nothing
Application.ScreenUpdating = True
End Function


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0