Problème Excel
lserrane
-
lermite222 Messages postés 9042 Statut Contributeur -
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
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
-
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. -
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.