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 Sub

Ce 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 Sub

A+

Niquel Merci beaucoup !

Rechercher des sujets similaires à "probleme end"