Problème de débutant sur VBA
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Problème de débutant sur VBA



  1. #1
    diego45

    Problème de débutant sur VBA


    ------

    Bonjour,
    Je suis un grand débutant dans le domaine de la programmation et c'est la première fois que je fais une programmation sur VBA.
    Pour se faire j'utilise un livre pour apprendre.
    Mais j'ai quelques problèmes.

    Suivant le modèle du livre pour déterminer si une Année est bissextile ou non j'ai tapé le code :

    Capture d’écran 2012-06-13 à 14.19.57.png

    Le problème est que je n'arrive pas à l'exécuter, lorsque je me rend dans ma feuille excel et que je tape le nom de ma fonction j'ai un problème.

    Capture d’écran 2012-06-13 à 14.20.25.png

    Je vous remercie pour votre aide, car j'ai déjà des difficultés au Chapitre 1 ça promet d'avantage.

    -----

  2. #2
    JPL
    Responsable des forums

    Re : Problème de débutant sur VBA

    Pas besoin de faire des copies d'écran pour le code. Dans l'éditeur avancé du forum il y a sur la barre d'outils une petite icône (#) qui te donne accès à la balise Code dans laquelle tu peux recopier le texte du programme.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    lucas.gautheron

    Re : Problème de débutant sur VBA

    Bonjour,

    Vous avez fait une faute de frappe... Relisez la formule excel que vous avez écrite !

    Autre chose : Je ne vois pas l'intérêt de vérifier si l'année spécifiée est un multiple de 100 ou 400, parce si c'est le cas, le premier test (annee % 4 == 0) aura forcément réussi (un multiple de 100 est un multiple de 4 : 4x25 = 100).

    A+,

  4. #4
    diego45

    Re : Problème de débutant sur VBA

    Merci pour vos réponses.
    La formule provient de wikipedia :

    Depuis l'ajustement du calendrier grégorien, sont bissextiles les années1 :
    soit divisibles par 4 mais non divisibles par 100 ;
    soit divisibles par 400.
    Donc, inversement, ne sont pas bissextiles les années :
    soit non divisibles par 4 ;
    soit divisibles par 100, mais pas par 400.
    Je relis la formule et je vous dit si j'ai trouvé comment l'arranger

    Merci encore

  5. A voir en vidéo sur Futura
  6. #5
    diego45

    Re : Problème de débutant sur VBA

    Je ne vois pas la faute dans ce code

    Code:
    Function ESTAnneeBissextile(iAnnee As Integer) As Boolean
    Dim bReponse As Boolean
    bReponse = False
    If iAnnee Mod 4 = 0 Then
    bReponse = True
    'Les Années bissextiles sont divisibles par 4
    If iAnnee Mod 100 = 0 Then
    bReponse = False
    If iAnnee Mod 400 = 0 Then
    bReponse = True
    End If
    End If
    End If
    ESTAnneeBissextile = bReponse
    End Function
    Elle doit être sous mes yeux, mais j'ai relu plusieurs fois et je ne la trouve pas.

  7. #6
    lucas.gautheron

    Re : Problème de débutant sur VBA

    Ah mea culpa, je croyais avoir vu "bReponse = True" partout (pas vu le bReponse = False)

    Regardez votre image #2, et lisez attentivement la formule que vous avez inscrite dans votre cellule... Vous avez fait plusieurs fautes de frappe dans son nom.

    Votre code VBA me parait correct a priori (mais je n'ai jamais utilisé ce langage)

    A+,

  8. #7
    diego45

    Re : Problème de débutant sur VBA

    Autant pour moi, j'ai écrit ça n'importe comment.

    bien écrit, voici le message.

    Capture d’écran 2012-06-13 à 17.15.42.png

    Donc ça ne fonctionne toujours pas mais je n'ai pas la même erreur.

    Donc il semble que Excel comprend bien que je parle de la macro que je viens de taper, mais j'ai l'impression qu'il ne sait pas où mettre la valeur A1.


    Capture d’écran 2012-06-13 à 17.18.01.png
    Dernière modification par diego45 ; 13/06/2012 à 16h19.

  9. #8
    JPL
    Responsable des forums

    Re : Problème de débutant sur VBA

    Extrait de Wikipedia :

    Depuis l'ajustement du calendrier grégorien, sont bissextiles les années1 :

    soit divisibles par 4 mais non divisibles par 100 ;
    soit divisibles par 400.

    Donc, inversement, ne sont pas bissextiles les années :

    soit non divisibles par 4 ;
    soit divisibles par 100, mais pas par 400.
    Il y a donc bien plusieurs tests à faire.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  10. #9
    diego45

    Re : Problème de débutant sur VBA

    C'est à dire ?
    Je précise que c'est la 1ere fois de ma vie que j'utilise VBA.

  11. #10
    whoami

    Re : Problème de débutant sur VBA

    Bonjour,
    Citation Envoyé par diego45 Voir le message
    Je ne vois pas la faute dans ce code

    Code:
    Function ESTAnneeBissextile(iAnnee As Integer) As Boolean
    Dim bReponse As Boolean
    bReponse = False
    If iAnnee Mod 4 = 0 Then
    bReponse = True
    'Les Années bissextiles sont divisibles par 4
    If iAnnee Mod 100 = 0 Then
    bReponse = False
    If iAnnee Mod 400 = 0 Then
    bReponse = True
    End If
    End If
    End If
    ESTAnneeBissextile = bReponse
    End Function
    Elle doit être sous mes yeux, mais j'ai relu plusieurs fois et je ne la trouve pas.
    Dans un cas de ce genre, on exécute manuellement le programme :
    - tu choisis une années comme entrée,
    - et tu suis ligne par ligne ce que fait ta fonction, en notant l'évolution des variables

    Pour que ce soit utile, il faut bien entendu que tu suives ligne par ligne le code effectivement écrit, pas ce que tu penses que ta fonction fait !

    En procédant ainsi, tu verras facilement ce qui ne va pas.

    Au passage, prends l'habitude de mettre ton code en forme : indentation, lignes vides pour aérer ...? par exemple
    Code:
    Function ESTAnneeBissextile(iAnnee As Integer) As Boolean
    
    Dim bReponse As Boolean
    
      bReponse = False
      
      If iAnnee Mod 4 = 0 Then
        bReponse = True
        'Les Années bissextiles sont divisibles par 4
    
      If iAnnee Mod 100 = 0 Then
        bReponse = False
      
      If iAnnee Mod 400 = 0 Then
        bReponse = True
      
      End If
      End If
      End If
      
      ESTAnneeBissextile = bReponse
    End Function
    ça permet déjà de trouver pas mal de problèmes, et ça facilite grandement la lecture et la maintenance du code.


  12. #11
    diego45

    Re : Problème de débutant sur VBA

    Vous auriez des tutos ou des trucs du genre pour super débutant, je suis perdu.
    Merci à vous

  13. #12
    diego45

    Re : Problème de débutant sur VBA

    Première question de débutant quand j'enregistre une macro, et que j'écrit un mot dans la case G17, que je mets ce mot en rouge et fond vert , j'arrête l'enregistrement de ma macro.
    Je vais dans la feuille 2 de mon classeur et je lance la macro que je viens d'enregistrer, uniquement le mot que j'ai tapé se mets dans la case G17 mais il n'est pas en couleur et n'a pas de fond en couleur.

    Quand j'ouvre l'éditeur le code est le suivant donc avec le peu que je connais en langage VBA il devrait mettre mon mot en couleur avec un fond en couleur aussi.
    Mais rien.

    Code:
    Sub Macro3()
    '
    ' Macro3 Macro
    '
    
    '
        Range("G17").Select
        ActiveCell.FormulaR1C1 = "Futura "
        Selection.Font.ColorIndex = 0
        Range("C13").Select
    End Sub
    EDIT : Le colorIndex = 0 est donc le problème.
    Mais c'est pas important que ça enregistre mal j'ai compris en modifiant le code manuellement.
    Je continu mes leçons.
    Dernière modification par diego45 ; 13/06/2012 à 20h18.

  14. #13
    whoami

    Re : Problème de débutant sur VBA

    Bonjour,

    En bref, on passe du coq à l'âne ...

    Ça n'encourage pas l'aide.

  15. #14
    Papy Octet

    Re : Problème de débutant sur VBA

    Bonjour diego45,

    Pour continuer avec la première question, et pour compléter les conseils de whoami (#10), la mise en pages avec les indentations est très très utile pour la relecture du code.
    Si tu modifie la mise en page de ton code comme suit :

    Code:
    Function ESTAnneeBissextile(iAnnee As Integer) As Boolean
    
    Dim bReponse As Boolean
    
      bReponse = False
      
      If iAnnee Mod 4 = 0 Then
        bReponse = True
        'Les Années bissextiles sont divisibles par 4
    
    	  If iAnnee Mod 100 = 0 Then
    	    bReponse = False
    	  
    		  If iAnnee Mod 400 = 0 Then
    		    bReponse = True
    		  
    		  End If
    	  End If
      End If
      
      ESTAnneeBissextile = bReponse
    End Function
    on voit mieux les tests de condition (If) imbriquées.

    J'ai testé (sur quelques dates) le code dans LibreOffice Calc et Ubuntu 12.04 64 bits : c'est OK.

    A+
    Dernière modification par Papy Octet ; 14/06/2012 à 08h44. Motif: Test du code : OK
    Cogito ergo sum !

  16. #15
    diego45

    Re : Problème de débutant sur VBA

    bonjour et merci pour vos réponses.

    Oui je passe du coque à l'âne car j'ai voulu dans un premiers temps suivre le livre que j'ai acheté, mais c'est encore trop difficile.

    Donc j'ai suivi le tuto d'un site pour grand débutant.

    Merci Papy Octet pour votre réponse, le code fonctionne aussi chez moi.

    Mes deux questions ont trouvés leurs réponses et je vous en remercie.

    Je reviendrais vous demander votre aide, car l'informatique et moi ça fait deux et j'aimerais bien y arriver.

  17. #16
    whoami

    Re : Problème de débutant sur VBA

    Bonjour,

    Ben oui, la programmation, l'évolution des espèces n'a pas prévu qu'on sache le faire d'instinct dès notre naissance.

    Ça demande du travail et de la rigueur, beaucoup de travail et de rigueur si on veut progresser.

    Bon courage.

Discussions similaires

  1. Probleme de "temps de reponse" sur Excel VBA
    Par invite2313209787891133 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 23/02/2012, 22h56
  2. Debutant : Probleme de recherche sur le forum
    Par invite8941a39c dans le forum Électronique
    Réponses: 4
    Dernier message: 22/05/2008, 15h09
  3. problème utilisation VBA sur excel 2007
    Par invite7b559047 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/02/2007, 00h00
  4. (débutant) Robot hexapode, problème sur l'électronique
    Par invite6afd98bf dans le forum Électronique
    Réponses: 3
    Dernier message: 14/05/2006, 18h34
  5. Problème en langage VBA
    Par invite588da7a7 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/07/2004, 13h00