Problème Excel

Bonjour à tous,

J'ai une petite macro que j'essaie de réaliser pour les cours et j'ai le message suivant qui s'indique:

Erreur de compilation

Sub ou Fonction non définie

Voilà la prog çi dessous . Merci d'avance pour l'aide .

Sub test()
'
' test Macro
'
' Touche de raccourci du clavier: Ctrl+t
'

Cells(1, 1) = "Nom"
Cells(1, 2) = "Age début de carrières"
Cells(1, 3) = "Année de carrières"
Cells(1, 4) = "Age fin de carrières"
Cells(1, 5) = "Date de naissance"
Cells(1, 6) = "Age"
Cells(1, 7) = "Statut"
Cells(1, 8) = "Portion du salaire"
n = InputBox("Pour combien de personnes voulez-vous faire les calculs ?")
For i = 2 To n + 1
Cells(i, 1) = InputBox(" Quel est votre nom?")
debut: Cells(i, 2) = InputBox("A quel âge avez-vous commencé votre carrière")
Cells(i, 3) = ("Combien d'années de carrière avez-vous?")
Cells(i, 4) = Cells(i, 2) + Cells(i, 3)
datenais = InputBox("Quel est votre date de naissance ?")
Cells(i, 5) = datenais
Cells(i, 6) = calculage(datenais)
If Cells(i, 6) < Cells(i, 4) Then
rep = MsgBox("votre âge " & Cells(i, 6) & " est inférieur à votre âge fin de carrière " & Cells(i, 4) & " voulez-vous continuer ?")
If rep = vbNo Then
GoTo debut
End If
End If
If Cells(i, 6) >= 60 Then
Cells(i, 7) = "Pensionné"
c = c + 1
ElseIf Cells(i, 6) >= 55 And Cells(i, 6) < 60 Then
Cells(i, 7) = "Prepensionné"
Else
Cells(i, 7) = "En activité "
End If
Select Case Cells(i, 7)
Case "En activité"
Cells(i, 8) = 1
Case "Prépensionné "
Cells(i, 8) = Cells(i, 3) / 55
Case "Pensionné"
Cells(i, 8) = Cells(i, 3) / 55
End Select

Next i
If c <> o Then
MsgBox ("Il y a " & c & " pensionnés")
End If
maju ("A1:H1")

End Sub

2 réponses

  1. Contributeur
    Bonjour,
    Tu n'indique pas sur quel ligne tu à l'erreur ?
    Mais à 1ère vue, maju ("A1:H1") ne veux rien dire ?
    Explique un peu mieux.
    A+
    Edit:
    Aussi calculage(datenais)
    En fait je pense qu'il te manque les fonctions Maju et CalculAge
    il manque le InputBox sur la ligne..
    Cells(i, 3) = ("Combien d'années de carrière avez-vous?") 

    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    1. Contributeur
      J'ai rectifié toutes les erreurs...

      Sub test()   
      ' Touche de raccourci du clavier: Ctrl+t   
      Dim n As Integer, i As Integer, Rep, c As Integer   
      Dim DateNais As Date   
          Cells(1, 1) = "Nom"   
          Cells(1, 2) = "Age début de carrières"   
          Cells(1, 3) = "Année de carrières"   
          Cells(1, 4) = "Age fin de carrières"   
          Cells(1, 5) = "Date de naissance"   
          Cells(1, 6) = "Age"   
          Cells(1, 7) = "Statut"   
          Cells(1, 8) = "Portion du salaire"   
          n = InputBox("Pour combien de personnes voulez-vous faire les calculs ?")   
          For i = 2 To n + 1   
              Cells(i, 1) = InputBox(" Quel est votre nom?")   
      debut:   
              Cells(i, 2) = InputBox("A quel âge avez-vous commencé votre carrière")   
              Cells(i, 3) = InputBox("Combien d'années de carrière avez-vous?")   
              Cells(i, 4) = Cells(i, 2) + Cells(i, 3)   
              DateNais = InputBox("Quel est votre date de naissance ?")   
              Cells(i, 5) = DateNais   
              Cells(i, 6) = Year(Now) - Year(DateNais)   
              If Cells(i, 6) < Cells(i, 4) Then   
                  Rep = MsgBox("votre âge " & Cells(i, 6) & " est inférieur à votre âge fin de carrière " & Cells(i, 4) & " voulez-vous continuer ?")   
                  If Rep <> vbNo Then   
                      GoTo debut   
                  Else 
                      Exit Sub 
                  End If   
              End If   
              If Cells(i, 6) >= 60 Then   
                  Cells(i, 7) = "Pensionné"   
                  c = c + 1   
              ElseIf Cells(i, 6) >= 55 And Cells(i, 6) < 60 Then   
                  Cells(i, 7) = "Prepensionné"   
              Else   
                  Cells(i, 7) = "En activité "   
              End If   
              Select Case Cells(i, 7)   
              Case "En activité"   
                  Cells(i, 8) = 1   
              Case "Prépensionné "   
                  Cells(i, 8) = Cells(i, 3) / 55   
              Case "Pensionné"   
                  Cells(i, 8) = Cells(i, 3) / 55   
              End Select   
          Next i   
          If c <> 0 Then   
              MsgBox ("Il y a " & c & " pensionnés")   
          End If   
          'maju ("A1:H1")   
      End Sub

      Conseils :
      Met Option Explicite en haut du module, ça évitera déjà les erreurs dans tes variables comme d'un o (lettre o) à la place de 0 (zéro)
      Déclare tes variables.
      Indente ton code.
      A+
      Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      NOTE : Je ne répond pas aux MP pour les questions techniques.