erreur sub ou function non définie

  • Initiateur de la discussion Initiateur de la discussion erossaan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

erossaan

Guest
bonjour, je débute en VBA,
j'ai commencé avec ce code basique mais je n'arrive pas a trouvé une solution pour ce probleme:

Sub Tsortie()

If startdate < aujourdhui() Then
Sheets("feuil1").range("M10").Value = "NON lancé"
End If

end sub
 
Re : erreur sub ou function non définie

Bonjour erossaan? Robert

oui comme dit Robert ou encore

Sub Tsortie()
If startdate < Today Then
Sheets("feuil1").Range("M10").Value = "NON lancé"
End If
End Sub



Mais le problème majeur est que VBA ne sait pas la valeur de la variable startdate à ce stade... donc il ne se passera rien, que neni, si elle n'est pas initialisée par ailleurs...

Cdt
@+Thierry

EDITION Exemples :
Code:
Sub TsortieExemple1()
Dim StartDate As Date
StartDate = Today - 1
If StartDate < Today Then
Sheets("feuil1").Range("M10").Value = "NON lancé"
End If
End Sub

Sub TsortieExemple2()
Dim StartDate As Date
Sheets("feuil1").Range("A10") = Format(Today - 1, "DD/MM/YYYY")
StartDate = Sheets("feuil1").Range("A10")
If StartDate < Today Then
Sheets("feuil1").Range("M10").Value = "NON lancé"
End If
End Sub


EDITION II
Amusant l'exemple2 il écrit ceci comme date en A10 29/12/1899
et si je change par
Sheets("feuil1").Range("A10") = Format(Date - 1, "DD/MM/YYYY")

Il est plus juste mais en format US nonobstant mon format ! [TABLE="width: 60"]
[TR]
[TD="class: xl63, width: 80, bgcolor: transparent, align: right"]04/02/2013[/TD]
[/TR]
[/TABLE]

 
Dernière édition:
Re : erreur sub ou function non définie

merci infiniment pour vos réponses et surtt pour votre réactivité 😀

mon code final est le suivant:

Sub Tsortie()
Dim startdate As Date
startdate = range("I10").Value
If startdate < today Then
Sheets("feuil1").range("M10").Value = "NON lancé"
End If

Sheets("feuil1").range("M11").Value = startdate

End Sub

NB: startdate doit recevoir la valeur dans I10 (je soupsonne que je n'ai pas réussi a bien saisir cette ommande 😛 )
il passe la compilation, mais lorsque je l'exécute ça donne rienen M10 (tant donnée que j'ai 25/04/2013 en I10)
répapitulant:
today:03/04/2013
I10: 25/03/2013
M10: rien en ce passe
M11:25/03/2013

retrouvez en pièce jointe mon ficher .xlsm
 

Pièces jointes

Dernière modification par un modérateur:
Re : erreur sub ou function non définie

re erossaan, Robert

En effet le Today est à proscrire semble-t'il dans ce cas de figure, (strange), fais donc comme Robert précisait avec Date...

Exemple

Code:
Sub Tsortie()
Dim startdate As Date
startdate = range("I10").Value
MsgBox Format(startdate, "DD/MM/YYYY")
If startdate < Date Then
MsgBox "OUI Plus petit"
Sheets("feuil1").range("M12").Value = "NON lancé"
End If
Sheets("feuil1").range("M11").Value = startdate
End Sub

Ensuite ui pourras virer les MsgBox ... Mais c'est utile en DEV...

Bon Courage
@+Thierry
 
Re : erreur sub ou function non définie

MERCI !!!!!! ça marche !!!
maintenant, comment modifier ce code pour le dissimulé sous forme de fonction? 😛

Code:
Function Tsortie(startdate As Date)

startdate = range("I10").Value

If startdate < Date Then
    Sheets("feuil1").range("M10").Value = "NON lancé"
   Else
    Sheets("feuil1").range("M10").Value = "que le calcul commance"
End If
Sheets("feuil1").range("M11").Value = startdate

End Function
j'ai introduit =tsortie(I10) dans la cellule M10 et j'ai reçut une notification "attention référence circulaire" (je vois aucune logique la dedans, j'ai même essayé de repéré les antécédent et les dépendant, et il n'il y a qu'un seule liaison avec la cellule contenant la formule:/)
PS: je vous remercie infiniment pour vos réponse et votre temps, j'essaye pas de vous pousser à travailler à ma place, j'essaye juste de saisir les bases en VBA (syntaxe procédure/fonction), une fois maitrisé je peut compté sur mon cerveau 😉
 

Pièces jointes

Re : erreur sub ou function non définie

Re re re re erossaan, Robert

Non attention, avec une fonction on n''écrit plus comme celà ...

Il faut faire comme suit :

Code:
Function Tsortie(ByRef CellDate As Range)
Dim StartDtae As Date
Application.Volatile '(pour que la fonction soit réactive aux changements dans la feuille)
startdate = CellDate.Value
If startdate < Date Then
    Tsortie = "NON lancé"
   Else
    Tsortie = "que le calcul commance"
End If


'Ce n'est plus une macro on ne peut pas faire d'action comme ceci sur une autre cellule !
'Sheets("feuil1").Range("M11").Value = startdate
End Function

Cordialement

@+Thierry
 
Re : erreur sub ou function non définie

merci merci merci 😀DDDDDDDDDDDDD
la fonction marche bien,
merci pour la remarque Application.Volatile
donc, si j'ai bien saisie, je n'aurai qu'à introduire le calcul dont j'ai besoin et en finir avec Tsortie = (le résultat final)
😀
 
Re : erreur sub ou function non définie

Re

Oui c'est bien ceci, presse la touche de Fonction F1 quand tu as selectionné le mot Function dans le code VBA, tu auras de l'aide sur les Functions VBA...

(c'est valable pour d'autres mots clef, F1 à retenir)

Bien à toi et bonne découverte du monde VBA...
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
411
Réponses
15
Affichages
782
Réponses
14
Affichages
484
Réponses
8
Affichages
390
Réponses
3
Affichages
332
Retour