Vba

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

  1. 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
    1. Contributeur
      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.
    2. 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...
    3. Contributeur
      @milawlolanainsi?
      jour = InputBox("date") 
      If Not IsDate(jour) Then 
          MsgBox ("veuillez saisir une date") 
      End If
    4. Contributeur
      @milawlolanje suggère d’arrêter d'utiliser Select. exemple:
      Range("a" & 1 + valeurdate) = jour
    5. je vais faire comme tu dis. merci beaucoup pour ta réponse
  2. Contributeur
    bonjour, peux-tu partager ton programme avec un if qui bloque?