[vba]excel, programmation

excel, programmation [vba] - VB/VBA/VBS - Programmation

Marsh Posté le 16-09-2006 à 18:56:02    

Bonjour à tous. :hello:  
 
je voudrait apprendre à programmer des macros sur excel. Je connais 1 peu la programmation, par tâtonnement. Mais la, je ne sais pas comment l'écrire. je voudrais...
 
"Si dans la cellule D9, posséde une date, fait le programe 1, si continue...."
 
pourriez-vous m'aider pour cette ligne?
et ou je pourrais trouver, des cours sur la programmation de vba, sur internet.
 
Je vous remercie par avance. :jap:


Message édité par starlion le 16-09-2006 à 18:58:26
Reply

Marsh Posté le 16-09-2006 à 18:56:02   

Reply

Marsh Posté le 16-09-2006 à 19:59:08    

Bonjour,
Voici quelques sites qui pourront t'aider à programmer en VBA (dans l'ordre d'apprentissage on va dire) :


À noter que VBA et VB ont beaucoup de choses en commun : les explications données à VB sont globalement valabes pour VBA (si jamais tu trouves un site proposant une meilleure pédagogie pour VB).
 
Concernant le programme que tu veux faire, il ressemblerait à ceci :
 
Routine exécutée lors d'un clic sur le bouton CommandButton1 :

Private Sub CommandButton1_Click()
Dim Ligne As Integer
Dim Colonne As Integer
 
    Ligne = 9
    Colonne = 4
 
    If IsDate(Cells(Ligne, Colonne).Value) = True Then
        MaSousRoutine1
    Else
        MaSousRoutine2
    End If
End Sub


 
On vient de déclarer deux variables (Ligne et Colonne) et on leur donne une valeur.
Puis on se sert de la fonction IsDate() qui renverra la valeur True si son argument est une date.
Dans notre cas, son argument est la valeur contenue dans la cellule D9.
 
Si la fonction IsDate renvoie True, alors on lance la procédure MaSousRoutine1. Si non, alors on lance la procédure MaSousRoutine2.
 
Voici le contenu des deux procédures :

Sub MaSousRoutine1()
    MsgBox "C'est une date !"
End Sub


 

Sub MaSousRoutine2()
    MsgBox "Ce n'est pas une date !"
End Sub


 
Leur but est d'afficher une boîte de dialogue personnalisée. Bien sûr, toi, tu remplaceras cette fonction par ce que tu veux.
 
N'hésite pas à passer par ici si tu bloques sur un point après quelques recherches ;)


Message édité par juju2k le 16-09-2006 à 20:08:13
Reply

Marsh Posté le 16-09-2006 à 20:53:24    

bonjour,
on autre lien qui me parait pas mal.
A+

Reply

Marsh Posté le 19-09-2006 à 22:09:35    

Trouve toi "VBA Excel" pour les Nuls, et aussi, pour commencer à déchiffrer du code (essentiel pour en écrire par la suite !!), enregistre tes manipulations avec l'enregistreur de macros, puis passe sur le code pour le revoir. Tu te familiarisera rapidement avec les diverses possibilités...
 
Bienvenue !!
 
PS : j'étais au même point que toi y'a 6 mois et maintenant ça va mieux, je suis certainement pas expert mais je m'en sors... ;)

Reply

Marsh Posté le 22-09-2006 à 00:39:18    

La base c'est de savoir faire :
 
Un test :
if truc = bidule then
   ...
else
   ...
end if
 
un for each :
For i = 1 to 100
   ...
Next i
 
Et une boucle :
Do While truc = bidule
   ...
Loop
 
Il y a plein de Tuto sur internet qui présente les instructions de base.
 
Apres en enregistrant des macros et en adaptant le code on peut faire énormément de choses.
 
Ne pas hesiter à utiliser l'explorateur d'objet pour trouver les propriétés et fonctions associées aux objets que l'on manipule ou chercher sur internet des exemples a adapter.
 
Ne pas se priver d'utiliser les fonctions de debug qui sont ce qu'elles sont mais qui restent de loin le moyen le plus pratique pour rechercher la cause d'une erreur (boucle infinie etc...) et ne pas cribler le code de msgbox comme le font certain débutant.
 
Enfin dans un dernier temps il y a souvent pleins de moyens d'arriver au résultat recherché. La vrai difficulté est de choisir la bonne méthode afin d'avoir un code compact et lisible et efficace car sur des projets avec pas mal de code quand on doit s'y replonger 6 mois plus tard et que le truc n'a aucune logique c'est tres tres pénible.
 
Bon courage !

Reply

Marsh Posté le 22-09-2006 à 00:41:15    

Et commencer ses modules par "option explicit" ca évite les mauvaises surprises...

Reply

Marsh Posté le 05-11-2006 à 13:02:35    

Bonjour à tous  :hello:  
 
 :jap: merci pour votre aide  :jap:  
 
J’ai commencé à lire Cathy Astuce, et je fais m'acheter "VBA Excel" pour les Nuls, mais je ne sais pas encore lequel acheter.
Je suis peux être 1 peux nul, mais j'ai pas encore compris à quoi servait les feuilles de module :(  
 
Je voudrais mettre un compteur à chaque fois que j'utilise le programme. Je m'explique:
La cellule "N2" sera la dernière ligne que j'utile, et que celle-ci sera augmenté de +1 comparer à la cellule "N3".
 
J’espère que j'étais assez clair et court. :heink:  
 
Je vous remercie par avance pour votre aide.  :jap:  

Reply

Marsh Posté le 07-11-2006 à 11:38:26    

C'est pas très clair !
 
Mais tu peux faire une action sur un bouton.
 
Quand tu cliques sur le bouton qui lance ton programme :  
 
 
Private Sub CommandButton1_Click()
Range ("N2" ).value = Range ("N3" ).value + 1
End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed