Problème de End If
Bonjour à toutes et à tous (et au forum aussi =)
Alors j'ai un petit problème sous Excel et particulièrement avec une macro (sans blague):
Sub Creer()
' Insérer une nouvelle substance
If IsEmpty(Range("nommolecule")) Then _
MsgBox "Veuillez remplir le champ Nom de la molécule" Else
If IsEmpty(Range("formulesemidev")) Then _
MsgBox "Veuillez remplir le champ Formule Semi-dévelopée" Else
If IsEmpty(Range("nocas")) Then _
MsgBox "Veuillez remplir le champ N° CAS" Else
If IsEmpty(Range("noce")) Then _
MsgBox "Veuillez remplir le champ N° CE" Else
Application.ScreenUpdating = False
Set Premcellvide = Sheets("Données").Range("A4")
Do While Not IsEmpty(Premcellvide)
Set Premcellvide = Premcellvide.Offset(1, 0)
Loop
Set nommolecule = Premcellvide
Set formsemidev = Premcellvide.Offset(0, 1)
Set nocas = Premcellvide.Offset(0, 2)
Set noce = Premcellvide.Offset(0, 3)
Set synonymes = Premcellvide.Offset(0, 4)
Set phrarisques = Premcellvide.Offset(0, 5)
Set massemol = Premcellvide.Offset(0, 6)
Set densite = Premcellvide.Offset(0, 7)
Set tfusion = Premcellvide.Offset(0, 8)
Set tebullition = Premcellvide.Offset(0, 9)
Set solubeau = Premcellvide.Offset(0, 10)
Set coeffdiffair = Premcellvide.Offset(0, 11)
Set coeffdiffeau = Premcellvide.Offset(0, 12)
Set kow = Premcellvide.Offset(0, 13)
Set kd = Premcellvide.Offset(0, 14)
Set coeffdiffPEH = Premcellvide.Offset(0, 15)
Set permcutanee = Premcellvide.Offset(0, 16)
Set pressvapsat = Premcellvide.Offset(0, 17)
Set dlcinquante = Premcellvide.Offset(0, 18)
Set clcinquante = Premcellvide.Offset(0, 19)
Set noel = Premcellvide.Offset(0, 20)
Set loel = Premcellvide.Offset(0, 21)
Set dja = Premcellvide.Offset(0, 22)
Set dtzerozerocinq = Premcellvide.Offset(0, 23)
Set cecinquante = Premcellvide.Offset(0, 24)
Set noec = Premcellvide.Offset(0, 25)
Set loec = Premcellvide.Offset(0, 26)
Set comm = Premcellvide.Offset(0, 27)
nommolecule.Value = Sheets("Ajout").Range("nommolecule").Value
formsemidev.Value = Sheets("Ajout").Range("formulesemidev").Value
nocas.Value = Sheets("Ajout").Range("nocas").Value
noce.Value = Sheets("Ajout").Range("noce").Value
synonymes.Value = Sheets("Ajout").Range("C10").Value
phrarisques.Value = Sheets("Ajout").Range("C11").Value
massemol.Value = Sheets("Ajout").Range("C14").Value
densite.Value = Sheets("Ajout").Range("C15").Value
tfusion.Value = Sheets("Ajout").Range("C16").Value
tebullition.Value = Sheets("Ajout").Range("C17").Value
solubeau.Value = Sheets("Ajout").Range("C18").Value
coeffdiffair.Value = Sheets("Ajout").Range("C19").Value
coeffdiffeau.Value = Sheets("Ajout").Range("C20").Value
kow.Value = Sheets("Ajout").Range("C21").Value
kd.Value = Sheets("Ajout").Range("C22").Value
permcutanee.Value = Sheets("Ajout").Range("C23").Value
pressvapsat.Value = Sheets("Ajout").Range("C24").Value
dlcinquante.Value = Sheets("Ajout").Range("F6").Value
clcinquante.Value = Sheets("Ajout").Range("F7").Value
noel.Value = Sheets("Ajout").Range("F8").Value
loel.Value = Sheets("Ajout").Range("F9").Value
dja.Value = Sheets("Ajout").Range("F10").Value
dtzerozerocinq.Value = Sheets("Ajout").Range("F11").Value
cecinquante.Value = Sheets("Ajout").Range("F14").Value
noec.Value = Sheets("Ajout").Range("F15").Value
loec.Value = Sheets("Ajout").Range("F16").Value
comm.Value = Sheets("Ajout").Range("E19").Value
If IsEmpty(comm) Then comm.Value = "Vide"
Range("C6:C11").ClearContents
Range("C14:C24").ClearContents
Range("F6:F11").ClearContents
Range("F14:F16").ClearContents
Range("E19").MergeArea.ClearContents
Sheets("Données").Select
Range(Range("A3"), Range("AB65000").End(xlUp)).Sort _
Key1:=Range("A3"), Header:=xlYes
Sheets("Accueil").Select
Application.ScreenUpdating = False
MsgBox "Le polluant a bien été ajouté à la base de données"
End SubCe qui me pose problème: Lorsque je laisse tel quel, il exécute toutes les applications même si les conditions sont réalisées ou pas (then et else), j'ai essayé d'enlever les tirets après les Then et rajouter des End If à la fin mais il me met l'erreur End If without Block If ou quelque chose comme ça.
Comment puis-je faire en sorte que si la première condition est réalisée, ça fasse la première opération sinon ça passe au deuxième If, puis idem pour les autres If (le gros gros pavé étant la suite du Else du dernier If tout en haut)?
Merci beaucoup
Cordialement Blobby
PS: J'ai add le fichier pour plus de précisions :p
Bonjour Bloddy
Il faut faire "simple", IF .. Exit Sub ...End If
Voici le code, tu es certain de ne pas te tromper comme ça
' Insérer une nouvelle substance
If IsEmpty(Range("nommolecule")) Then
MsgBox "Veuillez remplir le champ Nom de la molécule"
Exit Sub
End If
If IsEmpty(Range("formulesemidev")) Then
MsgBox "Veuillez remplir le champ Formule Semi-dévelopée"
Exit Sub
End If
If IsEmpty(Range("nocas")) Then
MsgBox "Veuillez remplir le champ N° CAS"
Exit Sub
End If
If IsEmpty(Range("noce")) Then
MsgBox "Veuillez remplir le champ N° CE"
Exit Sub
End If
Application.ScreenUpdating = False
Set Premcellvide = Sheets("Données").Range("A4")
Do While Not IsEmpty(Premcellvide)
Set Premcellvide = Premcellvide.Offset(1, 0)
Loop
Set nommolecule = Premcellvide
Set formsemidev = Premcellvide.Offset(0, 1)
Set nocas = Premcellvide.Offset(0, 2)
Set noce = Premcellvide.Offset(0, 3)
Set synonymes = Premcellvide.Offset(0, 4)
Set phrarisques = Premcellvide.Offset(0, 5)
Set massemol = Premcellvide.Offset(0, 6)
Set densite = Premcellvide.Offset(0, 7)
Set tfusion = Premcellvide.Offset(0, 8)
Set tebullition = Premcellvide.Offset(0, 9)
Set solubeau = Premcellvide.Offset(0, 10)
Set coeffdiffair = Premcellvide.Offset(0, 11)
Set coeffdiffeau = Premcellvide.Offset(0, 12)
Set kow = Premcellvide.Offset(0, 13)
Set kd = Premcellvide.Offset(0, 14)
Set coeffdiffPEH = Premcellvide.Offset(0, 15)
Set permcutanee = Premcellvide.Offset(0, 16)
Set pressvapsat = Premcellvide.Offset(0, 17)
Set dlcinquante = Premcellvide.Offset(0, 18)
Set clcinquante = Premcellvide.Offset(0, 19)
Set noel = Premcellvide.Offset(0, 20)
Set loel = Premcellvide.Offset(0, 21)
Set dja = Premcellvide.Offset(0, 22)
Set dtzerozerocinq = Premcellvide.Offset(0, 23)
Set cecinquante = Premcellvide.Offset(0, 24)
Set noec = Premcellvide.Offset(0, 25)
Set loec = Premcellvide.Offset(0, 26)
Set comm = Premcellvide.Offset(0, 27)
nommolecule.Value = Sheets("Ajout").Range("nommolecule").Value
formsemidev.Value = Sheets("Ajout").Range("formulesemidev").Value
nocas.Value = Sheets("Ajout").Range("nocas").Value
noce.Value = Sheets("Ajout").Range("noce").Value
synonymes.Value = Sheets("Ajout").Range("C10").Value
phrarisques.Value = Sheets("Ajout").Range("C11").Value
massemol.Value = Sheets("Ajout").Range("C14").Value
densite.Value = Sheets("Ajout").Range("C15").Value
tfusion.Value = Sheets("Ajout").Range("C16").Value
tebullition.Value = Sheets("Ajout").Range("C17").Value
solubeau.Value = Sheets("Ajout").Range("C18").Value
coeffdiffair.Value = Sheets("Ajout").Range("C19").Value
coeffdiffeau.Value = Sheets("Ajout").Range("C20").Value
kow.Value = Sheets("Ajout").Range("C21").Value
kd.Value = Sheets("Ajout").Range("C22").Value
permcutanee.Value = Sheets("Ajout").Range("C23").Value
pressvapsat.Value = Sheets("Ajout").Range("C24").Value
dlcinquante.Value = Sheets("Ajout").Range("F6").Value
clcinquante.Value = Sheets("Ajout").Range("F7").Value
noel.Value = Sheets("Ajout").Range("F8").Value
loel.Value = Sheets("Ajout").Range("F9").Value
dja.Value = Sheets("Ajout").Range("F10").Value
dtzerozerocinq.Value = Sheets("Ajout").Range("F11").Value
cecinquante.Value = Sheets("Ajout").Range("F14").Value
noec.Value = Sheets("Ajout").Range("F15").Value
loec.Value = Sheets("Ajout").Range("F16").Value
comm.Value = Sheets("Ajout").Range("E19").Value
If IsEmpty(comm) Then comm.Value = "Vide"
Range("C6:C11").ClearContents
Range("C14:C24").ClearContents
Range("F6:F11").ClearContents
Range("F14:F16").ClearContents
Range("E19").MergeArea.ClearContents
Sheets("Données").Select
Range(Range("A3"), Range("AB65000").End(xlUp)).Sort _
Key1:=Range("A3"), Header:=xlYes
Sheets("Accueil").Select
Application.ScreenUpdating = False
MsgBox "Le polluant a bien été ajouté à la base de données"
End SubA+
Niquel Merci beaucoup !