Problème Excel

lserrane -  
lermite222 Messages postés 9042 Statut Contributeur -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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.
    0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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.
    0