Exercice VBA (débutant)

Bonjour

Je me lance dans les macros VBA, mon 1er exercice coince (ça commence bien) en cellule C3, si je rentre une valeur autre qu'une date et que je clique sur le bouton "Contrôle" la macro s'arrête. Pourquoi ?

Je précise que j'ai suivi les cours donnés sur un site de formation VBA (en vidéo).

Je sais que cela va en faire sourire plus, car je pense que cela doit être une erreur de débutant.

Donc un peu d'indulgence, merci.

Voir fichier joint.

34classeur1.xlsm (41.01 Ko)

bonsoir,

remplace tes instructions dim par celles-ci

Dim prix
Dim site
Dim ma_date
Dim vide

Merci pour cette réponse rapide. Mais alors pourquoi faut-il affecter un type à la déclaration d'une variable ?

Car dans le cours les variables sont bien affectées d'un type et apparemment la macro fonctionne. Merci.

PapouMAC a écrit :

Merci pour cette réponse rapide. Mais alors pourquoi faut-il affecter un type à la déclaration d'une variable ?

Car dans le cours les variables sont bien affectées d'un type et apparemment la macro fonctionne. Merci.

sans précision de type, le type par défaut est variant.

si un type est défini la variable ne peut contenir que des valeurs qui correspondent à son type (exemple une variable de type date ne peut contenir qu'une date sous peine de générer une erreur, ce qui est le problème que tu rencontres) voici comment j'aurais écrit ton code si tu voulais absolument utiliser les types que tu as définis.

Option Explicit

Sub controle()
    Dim prix As Currency
    Dim site As String
    Dim ma_date As Date
    Dim vide As String

    If IsNumeric(Range("a1")) Then
        prix = Range("A1")
        Range("C1") = "Ceci est un nombre"
    Else
        Range("C1") = "Ceci n'est pas un nombre"
    End If

    If Not IsNumeric(Range("A2")) Then
        site = Range("a2")
        Range("C2") = "Ceci est un texte"
    Else
        Range("C2") = "Ceci n'est pas un texte"
    End If

    If IsDate(Range("A3")) Then
        ma_date = Range("A3")
        Range("C3") = "Ceci est une date"
    Else
        Range("C3") = "Ceci n'est pas une date"
    End If

    If Range("A4") = "" Then
        vide = Range("A4")
        Range("C4") = "Cellule vide"
    Else
        Range("C4") = "cellule non vide"
    End If

End Sub

Merci pour ces explications.

Rechercher des sujets similaires à "exercice vba debutant"