Ecriture VBA trop longue

  • Initiateur de la discussion Initiateur de la discussion eduraiss
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eduraiss

XLDnaute Accro
Bonjour le forum

voila j'ai un problème avec l'ecriture en VBA, le code est trop lon et je dois repasser a la ligne mais la je n'y arrive pas voici le bout de code


If cel = "SAVARY P" And (cel.Offset(0, 2 - Col) <> "APPRO FRUIT F10" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT F9" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT L3" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT M6" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT M7" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT M8" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT RM" Or cel.Offset(0, 2 - Col) = "CARTONS RM" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE DEC" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE F10" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE F9" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M15" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M17" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M5" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M7" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M8" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10") Then
MsgBox " Poste interdit à SAVARY P!"
End If

Ce code interdit la personne d'être positionné a certains endroit

Mes questions comme faire pour repasser a la ligne ou comment simplifier ce code

Merci a vous
 
Re : Ecriture VBA trop longue

Bonjour Eduraiss

pour aller à la ligne, un espace et un underscore "_" (sous le 8), après un mot :

Code:
If cel = "SAVARY P" And (cel.Offset(0, 2 - Col) <> "APPRO FRUIT F10" Or _
    cel.Offset(0, 2 - Col) = "APPRO FRUIT F9" Or cel.Offset(0, 2 - Col) = _
    "APPRO FRUIT L3" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT M6" Or _
    cel.Offset(0, 2 - Col) = "APPRO FRUIT M7" Or cel.Offset(0, 2 - Col) = _
    "APPRO FRUIT M8" Or cel.Offset(0, 2 - Col) = _
    "APPRO FRUIT RM" Or cel.Offset(0, 2 - Col) = "CARTONS RM" Or _
    cel.Offset(0, 2 - Col) = "CE D'EQUIPE DEC" Or cel.Offset(0, 2 - Col) = _
    "CE D'EQUIPE F10" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE F9" Or cel.Offset

@+
 
Re : Ecriture VBA trop longue

bonjour Pierrot,

voici une solution possible parmis d'autres:

Code:
Sub Exclure()
Dim Exclusions As String
Exclusions = "APPRO FRUIT F10," & _
         "APPRO FRUIT F9," & _
         "APPRO FRUIT L3," & _
         "APPRO FRUIT M6," & _
         "APPRO FRUIT M7," & _
         "APPRO FRUIT M8," & _
         "APPRO FRUIT RM," & _
         "CARTONS RM," & _
         "CE D'EQUIPE DEC," & _
         "CE D'EQUIPE F10," & _
         "CE D'EQUIPE F9," & _
         "CE D'EQUIPE M15," & _
         "CE D'EQUIPE M17," & _
         "CE D'EQUIPE M5," & _
         "CE D'EQUIPE M7," & _
         "CE D'EQUIPE M8," & _
         "EMBALLAGE F10," & _
         "EMBALLAGE F10," & _
         "EMBALLAGE F10," & _
         "EMBALLAGE F10," & _
         "EMBALLAGE F10," & _
         "EMBALLAGE F10,"
    If InStr(Exclusions, cel.Offset(0, 2 - Col)) > 0 Then
        MsgBox " Poste interdit à SAVARY P!"
    End If
End Sub

tu peux aussi mettre la liste des valeurs d'exclusion dans une zone de feuille de calcul, la nommée et regarder avec
Application.Macth(cel.Offset(0,2 -col),ZoneNomméeExclusion) si la valeur
existe.

A bientôt
 
Re : Ecriture VBA trop longue

bonjour,

je ne suis pas sur que tu te sois bien posé le probleme. peut-être que si tu essaies de formaliser ta question en nous envoyant un classeur excel allégé, tu y verras toi-même plus clair.

le classeur excel doit être de taille inférieure à 50Ko, tu dois pouvoir le zipper. prends également soin d'enlever toute donnée confidentielle.
 
Re : Ecriture VBA trop longue

bonjour eduraiss

A tester:

Code:
Sub test()
appro = Array("F10", "F9", "L3", "M6", "M7", "M8", "RM")
Ce = Array("DEC", "F10", "F9", "M15", "M17", "M5", "M7", "M8")
For n = 0 To UBound(appro)
 interdit = interdit & "APPRO FRUIT " & appro(n) & ","
Next n
For n = 0 To UBound(Ce)
 interdit = interdit & "CE D'EQUIPE " & Ce(n) & ","
Next n
interdit = interdit & "CARTONS RM,EMBALLAGE F10,"
If cel = "SAVARY P" And InStr(interdit, cel.Offset(0, 2 - col) & ",") <> 0 Then
 MsgBox " Poste interdit à SAVARY P!"
End If
End Sub

Toujours a la traine moi !!

Salut a tous

note a hasco 🙂 :
beaucoup d'EMBALLAGE F10
 
Dernière édition:
Re : Ecriture VBA trop longue

Re

Je vous renvoie un fichier car dans un des posts Hasco parle que je peut nommé les handicaps sur la feuille de calcul

cela m'intéresse, je renvoie un fichier ?je creer des feuilles qui sont toutes identique et je met un 1 devant les poste que la personnes peut faire

Voici le fichier

Excuser moi
 

Pièces jointes

Re : Ecriture VBA trop longue

Bonsoir à tous,

Voici une solution :
Code:
        If cel = "SAVARY P" And (cel.Offset(0, 2 - Col) <> "APPRO FRUIT F10" Or _
            cel.Offset(0, 2 - Col) = "APPRO FRUIT F9" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT L3" Or _
            cel.Offset(0, 2 - Col) = "APPRO FRUIT M6" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT M7" Or _
            cel.Offset(0, 2 - Col) = "APPRO FRUIT M8" Or cel.Offset(0, 2 - Col) = "APPRO FRUIT RM" Or _
            cel.Offset(0, 2 - Col) = "CARTONS RM" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE DEC" Or _
            cel.Offset(0, 2 - Col) = "CE D'EQUIPE F10" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE F9" Or _
            cel.Offset(0, 2 - Col) = "CE D'EQUIPE M15" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M17" Or _
            cel.Offset(0, 2 - Col) = "CE D'EQUIPE M5" Or cel.Offset(0, 2 - Col) = "CE D'EQUIPE M7" Or _
            cel.Offset(0, 2 - Col) = "CE D'EQUIPE M8" Or cel.Offset(0, 2 - Col) = "EMBALLAGE F10" Or _
            cel.Offset(0, 2 - Col) = "EMBALLAGE F9" Or cel.Offset(0, 2 - Col) = "EMBALLAGE L3" Or _
            cel.Offset(0, 2 - Col) = "EMBALLAGE L4" Or cel.Offset(0, 2 - Col) = "EMBALLAGE M15" Or _
            cel.Offset(0, 2 - Col) = "EMBALLAGE M17" Or cel.Offset(0, 2 - Col) = "EMBALLAGE M5" Or _
            cel.Offset(0, 2 - Col) = "EMBALLAGE M6" Or cel.Offset(0, 2 - Col) = "EMBALLAGE M7" Or _
            cel.Offset(0, 2 - Col) = "EMBALLAGE M8" Or cel.Offset(0, 2 - Col) = "EMBALLEUSE FL" Or _
            cel.Offset(0, 2 - Col) = "OPERATEUR FL" Or cel.Offset(0, 2 - Col) = "OPERATEUR L3" Or _
            cel.Offset(0, 2 - Col) = "OPERATEUR L4" Or cel.Offset(0, 2 - Col) = "POSE FEVE L4" Or _
            cel.Offset(0, 2 - Col) = "POSE FEVE RM" Or cel.Offset(0, 2 - Col) = "POSE FRUIT F10" Or _
            cel.Offset(0, 2 - Col) = "POSE FRUIT F9" Or cel.Offset(0, 2 - Col) = "POSE FRUIT FL" Or _
            cel.Offset(0, 2 - Col) = "POSE FRUIT M6" Or cel.Offset(0, 2 - Col) = "POSE FRUIT M7" Or _
            cel.Offset(0, 2 - Col) = "POSE FRUIT M8" Or cel.Offset(0, 2 - Col) = "POSE FRUIT RM" Or _
            cel.Offset(0, 2 - Col) = "POSE PLAQUE M17" Or cel.Offset(0, 2 - Col) = "ROGNURES FL") Then
          MsgBox " Poste interdit à SAVARY P!"
          End If
 
Re : Ecriture VBA trop longue

Bonsoir le forum

je reviens vers vous avec un fichier ou cela est plus clair

La macro dans le feuille1 ne fonctionne pas car je pense que je rentre top de chose (poste que la personne ne peut pas occuper

la je suis sur une interdiction de poste , il me faudrait le contraire c'est a dire que la personne ne peut allaer qu'a ses poste

Merci a vous
 

Pièces jointes

Re : Ecriture VBA trop longue

Bonsoir le forum et a vous tous, salut a toi Roland

je n'arrive pas a faire fonctionner le code

Par rapport au fichier que j'ai envoyé, je voudrais juste pouvoir rajouter des poste interdit a la personne

Le code dans le fichier marche très bien mais en rajoutant des poste cela bug

Merci a vous
 
Re : Ecriture VBA trop longue

bonsoir

ça ne peut pas fonctionner t'el que c'est conçu !
il faut au minimum connaître deux éléments essentiels !
le nom de la personne suivi du champ avec les interdits !?

Exemple:
dans une colonne on met un nom en entête avec en dessous le champ nommé "Clavaud G" et tous ses interdits, pour pouvoir rechercher dans cette liste tout ce qui lui est interdit !

parceque avec Worksheet_Change(ByVal Target As Range) ça ne ne peut pas fonctionner ainsi !

S'agit t'il uniquement de cette personne ou y en aura t'il d'autre !?

revoir ce fichier modifié !?

Roland
 

Pièces jointes

Dernière édition:
Re : Ecriture VBA trop longue

Bonjour Roland

Il y a plusieurs personnes a handicap ce qui complique la chose un truc important le code interdit les personnes a certains poste, mais j'ai des personnes qui on un telle handicaps que je ne peux les mettre qu'a deux postes ou trois par exemple je ne sais pas si l'on peux avoir cette variable.
Dans ce dernier point on passe a autoriser et plus a interdire
TOTO ne peut aller qu'a l'emballage L3 et a l'emballage L4 par exemple tout les autre poste lui sont interdit.

Merci a toi
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour