Vba

Fermé
milawlolan - 12 août 2018 à 12:04
 milawlolan - 14 août 2018 à 11:07
Bonjour,

Je suis novice en vba et j'aimerais qu'au fur et à mesure que je remplis des lignes, le tableau se fasse automatiquement. J'essaie d'utiliser if mais ça bloque. Est-ce que quelqu'un peut m'aider? Merci d'avance

2 réponses

yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 Ambassadeur 1 551
12 août 2018 à 21:50
bonjour, peux-tu partager ton programme avec un if qui bloque?
0
toto = InputBox("date")
tata = InputBox("intitulé")
titi = InputBox("CQ ou CB")
tutu = InputBox("débit")
momo = InputBox("crédit")


valeurdate = Application.WorksheetFunction.CountA(Range("a:a"))
'range (r[+1]c)).select
'range("a2").Select
Range("a" & 1 + valeurdate).Select
Selection = toto
If Not IsDate(toto) Then
MsgBox ("veuillez saisir une date")

End If



Range("b" & 1 + valeurdate).Select
Selection = tata

Range("c" & 1 + valeurdate).Select
Selection = titi
selelection = UCase(titi)
'majuscule
'Range("c" & 1 + valeurcqcb).Select
'Selection.Value = UCase(titi)

Range("d" & 1 + valeurdate).Select
Selection = -tutu
Range("d" & 1 + valeurdate).Select
Selection.Font.Color = RGB(248, 16, 16)
If Not IsNumeric(tutu) Then
MsgBox ("vous devez saisir un nombre")
End If

Range("e" & 1 + valeurdate).Select
Selection = momo
Selection.Font.Color = RGB(8, 148, 47)
If Not IsNumeric(momo) Then
MsgBox ("vous devez saisir un nombre")
End If
0
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 1 551
13 août 2018 à 21:09
deux choses à faire, avant tout:
1) ajouter "option explicit" en début de module
2) utiliser des noms compréhensibles pour les variables, des noms qui aident à comprendre à quoi servent ces variables.
ensuite, quand tu auras corrigé cela, poste à nouveau ton code, en expliquant quel "if" bloque.
0
Option Explicit

Sub entree()
Dim jour As Date
Dim intitulé As String
Dim moyen_paiement As String
Dim dépense As Currency
Dim versement As Currency
Dim valeurdate As Double


jour = InputBox("date")
intitulé = InputBox("intitulé")
moyen_paiement = InputBox("CQ ou CB")
dépense = InputBox("débit")
versement = InputBox("crédit")


valeurdate = Application.WorksheetFunction.CountA(Range("a:a"))
'range (r[+1]c)).select
'range("a2").Select
Range("a" & 1 + valeurdate).Select
Selection = jour
If Not IsDate(jour) Then
MsgBox ("veuillez saisir une date")

End If



Range("b" & 1 + valeurdate).Select
Selection = intitulé

Range("c" & 1 + valeurdate).Select
UCase (moyen_paiement)
'majuscule
'Range("c" & 1 + valeurcqcb).Select
'Selection.Value = UCase(titi)

Range("d" & 1 + valeurdate).Select
Selection = -dépense
Range("d" & 1 + valeurdate).Select
Selection.Font.Color = RGB(248, 16, 16)
If Not IsNumeric(dépense) Then
MsgBox ("vous devez saisir un nombre")
End If

Range("e" & 1 + valeurdate).Select
Selection = versement
Selection.Font.Color = RGB(8, 148, 47)
If Not IsNumeric(versement) Then
MsgBox ("vous devez saisir un nombre")
End If



en fait, par exemple, si je prends l'inputbox date, je peux entrer n'importe quoi. vba continue son déroulement d'inputbox et après le dernier, il fait mon message d'erreur sue la date. Moi j'aimerais que le message apparaisse juste après l'erreur de date dans l'inputbox. Pas sure d'être très claire...
0
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 1 551 > milawlolan
14 août 2018 à 08:58
ainsi?
jour = InputBox("date") 
If Not IsDate(jour) Then 
    MsgBox ("veuillez saisir une date") 
End If
0
yg_be Messages postés 23327 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 novembre 2024 1 551 > milawlolan
14 août 2018 à 09:00
je suggère d’arrêter d'utiliser Select. exemple:
Range("a" & 1 + valeurdate) = jour
0
je vais faire comme tu dis. merci beaucoup pour ta réponse
0