If elseif avec plusieurs conditions (and)

Bonjour,

Je suis débutant en vba. Et je ne comprend pas pourquoi la macro que j'ai réalisé ne fonctionne pas.

Je voudrais supprimer des colonnes en fonction de la valeur d'autres cellules (si elles sont vides ou non).

Sub Mise_en_forme_hypotheses()
'
' Mise_en_forme_hypothèses Macro
'

'
  If ((Worksheets("Paramètres").Range("I7").Value = "") And (Worksheets("Paramètres").Range("I8").Value = "") And (Worksheets("Paramètres").Range("I9").Value = "") And (Worksheets("Paramètres").Range("I10").Value = "") And (Worksheets("Paramètres").Range("I11").Value = "")) Then
    Worksheets("Hypothèses").Range("F:F", "G:G", "H:H", "I:I", "J:J", "L;L", "M:M", "N:N", "O:O", "P:P").Delete Shift:=xlToLeft

  ElseIf ((Worksheets("Paramètres").Range("I7").Value <> "") And (Worksheets("Paramètres").Range("I8").Value = "") And (Worksheets("Paramètres").Range("I9").Value = "") And (Worksheets("Paramètres").Range("I10").Value = "") And (Worksheets("Paramètres").Range("I11").Value = "")) Then
    Worksheets("Hypothèses").Range("G:G", "H:H", "I:I", "J:J", "M:M", "N:N", "O:O", "P:P").Delete Shift:=xlToLeft

 ElseIf ((Worksheets("Paramètres").Range("I7").Value <> "") And (Worksheets("Paramètres").Range("I8").Value <> "") And (Worksheets("Paramètres").Range("I9").Value = "") And (Worksheets("Paramètres").Range("I10").Value = "") And (Worksheets("Paramètres").Range("I11").Value = "")) Then
    Worksheets("Hypothèses").Range("H:H", "I:I", "J:J", "N:N", "O:O", "P:P").Delete Shift:=xlToLeft

 ElseIf ((Worksheets("Paramètres").Range("I7").Value <> "") And (Worksheets("Paramètres").Range("I8").Value <> "") And (Worksheets("Paramètres").Range("I9").Value <> "") And (Worksheets("Paramètres").Range("I10").Value = "") And (Worksheets("Paramètres").Range("I11").Value = "")) Then
    Worksheets("Hypothèses").Range("I:I", "J:J", "O:O", "P:P").Delete Shift:=xlToLeft

  ElseIf ((Worksheets("Paramètres").Range("I7").Value <> "") And (Worksheets("Paramètres").Range("I8").Value <> "") And (Worksheets("Paramètres").Range("I9").Value <> "") And (Worksheets("Paramètres").Range("I10").Value <> "") And (Worksheets("Paramètres").Range("I11").Value = "")) Then
    Worksheets("Hypothèses").Range("J:J", "P:P").Delete Shift:=xlToLeft

  End If

End Sub

bonjour,

essaie cette syntaxe

Worksheets("Hypothèses").Range("F:F,G:G,H:H,I:I,J:J,L:L,M:M,N:N,O:O,P:P").Delete Shift:=xlToLeft

J'ai essayé. Aucune réaction de VBA. Pourtant lorsque je compile, VBA ne détecte pas d'erreur.

Je joints mon fichier comme sa vous verrez plus facilement ce que je souhaite faire.

Cela se passe sur l'onglet "paramètres" et "hypothèses"

Je crois avoir identifier mon erreur.

En fait cela ne vient pas du code en lui même, mais d'une erreur de ma part. (J'ai pointé la condition sur la mauvaise colonne -> I au lieu de B)

Ducou j'ai utilisé la synthaxe que tu m'as donné et cela marche!

Bonjour,

edit :ma réponse a été rédigée sans avoir vu ta dernière réaction.

2 problèmes :

problème 1:

il reste un ; au lieu de : dans

Worksheets("Hypothèses").Range("F:F, G:G, H:H, I:I, J:J, L;L, M:M, N:N, O:O, P:P").Delete Shift:=xlToLeft

tu devrais donc recevoir un premier message d'erreur si cette instruction était exécutée

problème 2 :

tu as des cellules fusionnées, tu ne pourras pas supprimer les colonnes qui contiennent des cellules fusionnées. à nouveau tu devrais recevoir un message d'erreur si cette instruction était exécutée.

mais comme tu ne reçois pas de message d'erreur, j'en déduis que les conditions pour l'exécution ne sont pas rencontrées. vérifie tes données dans ton tableau paramètres. en supprimant les données de I7 à I11, j'obtiens bien les messages d'erreur.

Re,

Je ne rencontre aucun message d'erreur à cause de cellule fusionné. j'ai testé en mettant des valeurs vide de b7 à b11 et cela fonctionne (après avoir corrigé le ; dans le code.merci). Et il s'agit non pas de i7 à i11 mais en fait de b7 à b11 dans les conditions...

Re,

Je ne rencontre aucun message d'erreur à cause de cellule fusionné.

en effet cela ne semble pas poser de problème. ignore donc ce commentaire

Rechercher des sujets similaires à "elseif conditions"