alléger un code vba

pascal21

XLDnaute Barbatruc
bonjour à tous

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Dim Heure As Integer
Dim Mention As String


Heure = Range('r4')
If Heure 0 And Heure = 50 And Heure 250 Then Mention = 'Attention erreur!! vérifier les heures machines'
Range('o4') = Mention

j'ai ce bout de code que j'ai repetté une trentaine de fois pour qu'il concerne toutes les cellules de r4 à r35 et de o4 à o35
comment faire pour alléger
merci

Message édité par: pascal21, à: 05/02/2006 14:03
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Pascal, bonjour le forum,

Je n'ai pas très bien compris où tu voulais en venir... Je te propose ce code en espérant qu'il convienne :

Sub Macro1()
Dim cel As Range
For Each cel In Range('R4:R35')
If cel.Value = 0 Or cel.Value = 50 Or cel.Value = 250 Then
cel.Offset(0, -3).Value = 'Attention erreur ! Vérifier les heures machines'
End If
Next cel
End Sub
 

justine

XLDnaute Occasionnel
bonjour le forum, pascal21, robert
pendant que je testais mon code, la solution de robert est apparue.
j'aurais mis la meme chose.
pascal21, il y avait une petite erreur dans ta condition, ta variable h ne peut pas avoir 3 valeur differente en meme temps, mais peut avoir soit l'une , soit une autre donc mettre OR au lieu de AND
tu peux mettre la condition AND quand tu as deux variables differrentes.
bonne continuation
justine
 

pascal21

XLDnaute Barbatruc
je viens de m'apercevoir qu'il manquait un bout du code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Dim Heure As Integer
Dim Mention As String


Heure = Range('r4')
If Heure 0 And Heure = 50 And Heure 250 Then Mention = 'Attention erreur!! vérifier les heures machines'
Range('o4') = Mention

je ne sais pas si ça changera quelque chose à la solution de robert

Message édité par: pascal21, à: 05/02/2006 14:07

Message édité par: pascal21, à: 05/02/2006 14:08
ah bin voilà autre chose ça veut pas copier le code en entier
il manque 2 if heure

Message édité par: pascal21, à: 05/02/2006 14:10
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Pascal, Justine (Titanesque), bonjour le forum,

Heu Pascal joli gag. Tu as remis exactement le même code que dans ton premier post...
Par contre, je ne m'était pas aperçu que ton code était dans la macro événementielle Selection_Change. Vu que tu n'y as mis aucune restriction, cela risque d'alourdir les déplacements dans cet onglet. À chaque déplacement de la cellule active, la boucle sur un trentaine de cellule va se faire...


Édition :

On s'est croisés Pascal... Du coup je comprends mieux le gag. Sinon Justine à raison même si ça marche chez toi avec AND, c'est bien OR qu'il faut pour vérifier plusieurs valeurs de la même variable.

Message édité par: Robert, à: 05/02/2006 14:21
 

pascal21

XLDnaute Barbatruc
bonjour justine
le code que j'ai fonctionne pourtant très bien chez moi il faut prendre en compte que je n'arive à le copier/coller en entier (???)
il manque 3 lignes if heure



If Heure 0 And Heure = 50 And Heure 250 Then Mention = 'Attention erreur!! vérifier les heures machines'

rien à faire il ne veut pas ecrire le reste du code

Message édité par: pascal21, à: 05/02/2006 14:15
 

pascal21

XLDnaute Barbatruc
pas facile de ce faire comprendre si je n'arrive pas à vous faire parvenir ce bout de code en entier
et le classeur fait plus de 300 ko pour la 1ere feuille alors!! le zippé pour faire moins de 50ko faut pas rever
je vais essayer de le réecrire à la main au moins les lignes if heure
if heure 0 and heure <50 then mention 'bla,bla,bla2'
etc....
 

pascal21

XLDnaute Barbatruc
je pense que mon code est bon
je le reprends
if heure>0andheure<50thenmention'blablabla1'
ifheure=0thenmention''
ifheure50andheure250thenmention'blablabla4'
je colle tout pour voir si le code s'écrit

voilà les lignes qui manquent
maintenant je rapelle ce que je voulais
modifier le code pour qu'il concerne les cellules de r4 à r35 et de o4 à o35
merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Pascal, Justine, bonsoir le forum,

Cela n'a plus rien à voir avec ta première proposition... Je pense que tu pourrais adapter le code que je t'avais donné :

Sub Macro1()
Dim cel As Range
For Each cel In Range('R4:R35')
If cel.Value = 0 then
cel.Offset(0, -3).Value = 'blabla 1'
ElseIf cel.Value > 0 and cel.Value 50 and cel.value < 250 Then
cel.Offset(0, -3).Value = 'blabla 3'
End If
Next cel
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Pascal, Justine, bonsoir le forum,

Cela n'a plus rien à voir avec ta première proposition... Je pense que tu pourrais adapter le code que je t'avais donné :

Sub Macro1()
Dim cel As Range
For Each cel In Range('R4:R35')
If cel.Value = 0 then
cel.Offset(0, -3).Value = 'blabla 1'
ElseIf cel.Value > 0 and cel.Value 50 and cel.value < 250 Then
cel.Offset(0, -3).Value = 'blabla 3'
End If
Next cel
End Sub
 

pascal21

XLDnaute Barbatruc
alors ça c'est quand même un mystère même écrit à la main
e pense que mon code est bon
je le reprends
if heure'>'0andheure'<'250thenmention'blablabla4'
je colle tout pour voir si le code s'écrit

voilà les lignes qui manquent
il manque encore des lignes et des lettres ont disparues
en rouge entourées de'(si ça fonctionne les lettres qui manquent si vous avez une explication ???????
je n'ai pas remis les lignes qui manquent

Message édité par: pascal21, à: 05/02/2006 22:00

Message édité par: pascal21, à: 05/02/2006 22:01
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Pascal, Justine, bonjour le forum,

Oui en effet Pascal j'ai le même problème que toi, deux lignes ont disparu dans le code que je t'ai proposé. Mais finalement je me demande si ce n'est pas ça qui te préocupe plus que ton problème de macro. Deux propositions que je te soumets (avec Justine) et tu ne daignes même pas dire si ça te convient ou pas. Relie bien ce post car c'est bien le dernier que je t'envoie...
 

Statistiques des forums

Discussions
312 379
Messages
2 087 770
Membres
103 662
dernier inscrit
rterterert