Problème Excel

Fermé
lserrane - 7 mai 2012 à 00:39
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 7 mai 2012 à 10:30
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

A voir également:

2 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/05/2012 à 10:18
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
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 7/05/2012 à 10:37
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