Comment attribuer plusieurs valeurs (dans le dur) à une variable [Résolu]

Signaler
Messages postés
9
Date d'inscription
mardi 8 avril 2014
Statut
Membre
Dernière intervention
11 novembre 2014
-
Messages postés
9
Date d'inscription
mardi 8 avril 2014
Statut
Membre
Dernière intervention
11 novembre 2014
-
Bonjour,

Je cherche à créer une macro toute simple qui permettrait à l'utilisateur du fichier de supprimer les lignes qu'il a préalablement sélectionnées. Là dessus, pas de soucis. En revanche, je souhaite empêcher l'utilisateur de supprimer les 3 premières lignes de l'onglet, qui constituent l'entête du tableau (sait-on jamais). J'ai donc utilisé la fonction if de la façon suivante :

    If NumLigne = 1 Then
        MsgBox "Il est impossible de supprimer les lignes d'entete de cet onglet", vbCritical, "Suppression impossible"
    ElseIf NumLigne = 2 Then
        MsgBox "Il est impossible de supprimer les lignes d'entete de cet onglet", vbCritical, "Suppression impossible"
    ElseIf NumLigne = 3 Then
        MsgBox "Il est impossible de supprimer les lignes d'entete de cet onglet", vbCritical, "Suppression impossible"
    Else
        ...reste du code pour la suppression de la ligne
    End If

J'imagine qu'il est possible de ne faire qu'une seule ligne au lieu des 3 lignes ci-dessus mais je n'y parviens pas... la fonction "Or", par exemple, ne marche pas (ou alors je l'utilise mal).

Par extension, je me demande comment on fait pour attribuer plusieurs valeurs (dans le dur) à une variable. Par exemple une variable "X" qui ne peut prendre que les valeurs 1, 2 & 5.

Merci d'avance pour votre aide !!

3 réponses

Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
338
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
338
Bonjour,


Tu peux en effet utiliser des OR ou des AND dans tes IF..

Exemple :
If NumLigne = 1 or NumLigne = 2 or NumLigne =  3 Then
'.....
End if


Tu peux aussi utiliser du SELECT CASE

SELECT CASE NumLigne
   Case 1,2,3
      msgbox "error !"
   case else
     msgbox "toto"
End Select


Tu peux aussi... avec un seul IF le faire :
If NumLigne < 4 then
    MsgBox "Il est impossible de supprimer les lignes d'entete de cet onglet", vbCritical, "Suppression impossible"
End if




Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Messages postés
9
Date d'inscription
mardi 8 avril 2014
Statut
Membre
Dernière intervention
11 novembre 2014

Merci pour ces réponses. Je ne suis pas mécontent de faire la connaissance du Select Case, qui permet d'affecter plusieurs valeurs fixes à une macro.
bon we !!
Messages postés
23562
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2020

Bonjour,

Pourquoi l'embêter avec des messages inutiles ?
Ne supprime que si
If NumLigne > 3 then ... 

Il le verra bien que les autres lignes restent.

eric
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
338
@Eriiic :
Pourquoi l'embêter avec des messages inutiles ?
Je ne vois pas en quoi c'est inutile....
Si une personne essaie de supprimer une ligne... et que rien ne se passe.... il ne va pas nécessairement se dire..."Ah ben c'est que je ne peux pas..." .. il risque plutot de penser.."Ah ben son code ne fonctionne pas !!"

Comme disaient les inconnus :
<<Ils ne faut pas prendre les gens pour des cons, mais il ne faut pas oublier qu'ils le sont...>>
Messages postés
23562
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2020

Je pense qu'aucun utilisateur ne sera surpris ni ne fera de scandale si on l'empêche de supprimer une ligne de titre sans lui dire explicitement.
Ceci n'engage que moi bien sûr, chacun est maitre de son ouvrage.
eric