dimanche 12 décembre 2010

[ Part-1] Travailler avec VBA sous Excel



Bonjour tout le monde ,après une longue période d'absence , je reviens avec un nouveau projet mais cette fois ci sur Excel et VBA (Visual Basic for Application ) . Je vais essayer de vous faire un petit programme simple pour comprendre la logique de programmation et lier les cellules de la feuille de calcul au code VBA , vous allez donc programmer des "Macro" ( ce sont des fonctions que vous programmez au préalable a l'aide du code Visual Basic ). Si vous avez lu l'article précédent sur le "Alarme : Gestionnaire d'évènements version 2 " où on a crée un code a partir de l'environnement visual basic 6 et on a importé et exporté les données de Excel vers VB et réciproquement donc là , le but c'est de travailler tout le code sous Excel . Vous allez me demander quelle est la différence entre ces deux méthodes ?.
La première chose a savoir c'est que le code sera intégrer dans la feuille de calcul Excel alors que lorsqu'on programme avec VB et exporté ou importé les données , ça sera séparé c'est à dire , on a la feuille excel qui sert de base de données et le code sera dans l'exécutable qui est crée avec VB .
C'est vrai que vous pouvez intégrer les formules dans la feuille de calcul directement , mais si vous voulez faire un programme avancé ( Modérément !! ) vous devez travailler avec VBA .
La première procédure a connaitre c'est comment intégrer les données dans les cellules , suivez ces étapes :
N.B : je travaille avec Excel 2007 .
  1. Lancez Excel et faite ( Alt + F11 ) pour lancer le VBA .
  2. Créez un module en cliquant avec le bouton droit de la souris sur la fenêtre "project" ( qui se trouve a votre gauche ) , choisissez "insertion > Module "
  3. Maintenant , on écrit ce code :
Sub remplissage ()
If Cells(1,1) = "" Then ' Vérifie si la cellule (1,1) est rempli .
MsgBox "Veuillez entrer le Nombre d'année" , vbinformation,"Message"
End If
N = Cells(1,1)
For x = 1 To N ' le boucle sert a répéter l'instruction N fois "
Cells(2, x + 2) = "Année" & x 'Affiche dans la ligne 2 , x+1 colonne , le numéro de l'année
Next x
End sub
Avant de lancer le macro , assurez vous bien que vous avez inséré le nombre d'année dans la cellule (1,A) .
Ensuite , allez sur la feuille où vous avez insérer le nombre d'année , et cliquez sur l'onglet affichage , et choisissez "Macro " => remplissage . Vous obtenez une ligne de N colonne .
Par exemple : N= 3
vous aurez : Année 1 Année 2 Année 3 .

Cet article est une introduction seulement , donc je vais essayer de faire des petits code amusant et intéressant : p .

A +

mardi 5 octobre 2010

[Transition] : De retour avec d'autres idées

Bonjour a vous ,

Je suppose que vous vous dites que j'ai arrêté le Blogging !!! , je vous rassure , je suis de retour dans quelques semaines ou quelques jours avec d'autres idées et d'autres projets .
Mais comme j'ai changé de pays alors vous en douter que ça ma pris beaucoup de temps ( démarches administratives) , du coup je n'avais plus le temps de poster sur mon blog .

Alors @ bientôt .

Islem

jeudi 14 janvier 2010

Alarme : Gestionnaire d'évènements version 2 :p


Sur mon dernier article , je vous ai dit que cette application est très basique et elle peut être largement améliorée.
ça reste une version très simple , et qui pourra être largement améliorée :) , par l'ajout d'un historique d’événements ,amélioration graphique ...ect .
a déclaré Islem dans son précèdent article ... lol

Du coup , j'ai essayé de modifier vu que je n'ai rien trouvé à faire ces derniers jours :p , donc je vais tout simplement parler des modifications . La plus importante c'est l'historique des événements , bof ! c'était une chose facile à faire , j'ai voulu vous laisser essayer ( et moi aussi j'ai essayé vu que je ne savais pas le faire :) ) et maintenant je dévoile la solution :) :p qui n'a rien de spécial .
Bon, j'ai rajouté une autre fenêtre qui gère les tâches , j'ai modifié l'instruction conditionnelle "if " en ajoutant la comparaison avec la date , donc vous avez une comparaison date et heure , ce qui veut dire que vous pourriez gérer vos tâches du mois ou de l'année .. :p :D
La procédure du Timer n'a pas trop changée

Private Sub Timer1_Timer()
On Error Resume Next
Label1 = Time
Label7 = Date
For i = 0 To 10
If Label1 = time1(i) And Label7 = date1(i) Then
mp.FileName = App.Path & "\newemail.wav"
MsgBox "Votre tache : " & tache(i)
End If
Next i
End Sub
Et voila , la procédure du bouton "Créer des événements" , le code important seulement .
Private Sub Command1_Click()
On Error Resume Next
For i = 0 To 10
tache(i) = Text1(i)
date1(i) = Text5(i)
time1(i) = Text2(i) & ":" & Text3(i) & ":" & Text4(i)
Next i
For i = 0 To 10
If Text1(i) <> "" Then
Actioninscrire = Inscrire(App.Path & "\Event", Text1(i), i + 1, 1)
If Text2(i) <> "" And Text3(i) <> "" And Text4(i) <> "" Then
Actioninscrire = Inscrire(App.Path & "\Event", Text2(i), i + 1, 2)
Actioninscrire = Inscrire(App.Path & "\Event", Text3(i), i + 1, 3)
Actioninscrire = Inscrire(App.Path & "\Event", Text4(i), i + 1, 4)
List1.AddItem date1(i)
If Text5(i) <> "" Then
Actioninscrire = Inscrire(App.Path & "\Event", Text5(i), i + 1, 5)
End If
End If
End If
Next i
Label2 = List1.ListCount
Actioninscrire = Inscrire(App.Path & "\Event", Label2, 12, 6)
Unload Me
End Sub
La sauvegarde des données se fait dans un fichier Excel ( c'est mon premier essai ) . L'inconvénient de ce concept c'est la lourdeur de l'application lorsqu'elle charge les données enregistrées mais j'ai pu gérer ça en intégrant un compteur " je l'appel compteur de chargement :p" d'où cette ligne de commande "Label2 = List1.ListCount".
Voici la nouvelle version téléchargement ici , s'il y aura d'autres modifications , je mettrai a jour le lien : )

@Bientot
M.Islem