Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business



|||-  

Problème macro avec VBA

 

willyplaisir
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

Problème macro avec VBA

Prévenir les modérateurs en cas d'abus 
Manu40300
manu40300
  1. Posté le 27/03/2013 à 19:43:52  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour à tous,

 Je suis en train de faire une macro et je n'ai plus qu'une chose à modifier mais étant totalement novice, j'aurai besoin d'aide. Le problème à rectifier est la partie en gras, le reste de la macro fonctionne correctement et permet simplement de masquer diverses lignes de la feuille suivant les valeurs de certaines cellule.

 Concernant la partie en gras, Je ne sais pas si j'ai utilisé les bonnes fonctions alors voici ce que je veux que ma macro fasse exactement:
 Si en cellule B18, je rentre 1
 Je me retrouve en H18, jusque la ça va.
 Par la suite, je voudrais  qu'une fois que j'ai rentré la valeur en cellule H18, le programme vérifie que la valeur sur la colonne B pour chacune des lignes 31 à 35 est égale à la valeur de la cellule H18 multiplié par 2. Ainsi les lignes ne respectant pas la condition se masquent.

 Merci pour votre aide.

 Option Explicit


 Sub Worksheet_Change(ByVal Target As Range)
 If Not Application.Intersect(Target, Union(Range("B10" ), Range("B14" ), Range("B18" ), Range("B20" ))) Is Nothing Then ' Condition pour que cela ne se déclenche pas si changement autre cellule

Select Case Target.Address

Case Is = Range("B10" ).Address

Select Case Target.Value

Case "1"

Rows("36:37" ).EntireRow.Hidden = True

Range("H10" ).Select

Case "2"

Rows("36:37" ).EntireRow.Hidden = False

Range("B12" ).Select

End Select

Case Is = Range("B14" ).Address

Select Case Target.Value

Case "1"

Rows("38:38" ).EntireRow.Hidden = True

Range("B15" ).Select

Case "2"

Rows("38:38" ).EntireRow.Hidden = False

Range("B15" ).Select

End Select

Case Is = Range("B18" ).Address

Select Case Target.Value

<gras> Case "1"

Range("H18" ).Select

Dim ligne As Integer

For ligne = 31 To 35

If Cells(ligne, 2) <> Cells(18, 8).Value * 0.2 Then

Rows(ligne & ":" & ligne).EntireRow.Hidden = True

Range("B20" ).Select

End If

Next</gras>

Case "2"

Range("31:35" ).EntireRow.Hidde​n = False

Range("B20" ).Select

End Select

Case Is = Range("B20" ).Address

Select Case Target.Value

Case "1"

Rows("30:30" ).EntireRow.Hidden = True

Range("H20" ).Select

Case "2"

Rows("30:30" ).EntireRow.Hidden = False

Range("B22" ).Select

End Select

End Select
 End If
 End Sub

 Manu

nonaseb
Débutant confirmé (de 1 000 à 4 999 messages postés)
  1. Posté le 30/03/2013 à 08:54:19  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour Manu,

 ou plutôt Re bonjour...

 On a du mal à te suivre, tu commences un sujet dans Bureautique, puis tu continues ici...  :/  

 Si j'ai bien compris ton problème...

 A partir de la valeur de la cellule H18, tu voudrais rechercher dans la plage B31:B35 les cellules dont la valeur est égale à 2 fois H18 puis masquer les lignes dont les cellules B ne répondent pas à ce critère

 Pour cela tu peux créer une boucle For Each Next

 Les modifications à faire dans ta procédure sont ci-dessous en gras

 If Not Application.Intersect(Target, Union(Range("B10" ), Range("B14" ), Range("B18" ), Range("B20" ), Range("H18" ))) Is Nothing Then
 ' Condition pour que cela ne se déclenche pas si changement autre cellule

 Select Case Target.Address
 Case Is = Range("B10" ).Address
 Select Case Target.Value
 Case "1"
 Rows("36:37" ).EntireRow.Hidden = True
 Range("H10" ).Select
 Case "2"
 Rows("36:37" ).EntireRow.Hidden = False
 Range("B12" ).Select
 End Select
 Case Is = Range("B14" ).Address
 Select Case Target.Value
 Case "1"
 Rows("38:38" ).EntireRow.Hidden = True
 Range("B15" ).Select
 Case "2"
 Rows("38:38" ).EntireRow.Hidden = False
 Range("B15" ).Select
 End Select

 Case Is = Range("B18" ).Address
 Select Case Target.Value
 Case "1"
 Range("H18" ).Select
 Case "2"
 Range("31:35" ).EntireRow.Hidde​n = False
 Range("B20" ).Select
 End Select
 Case Is = Range("H18" ).Address
 Select Case Target.Value
 Case Is <> ""
 Dim x As Range
 Dim y As Integer
 y = Range("H18" ).Value
 For Each x In Range("B31:B35" )
 If x <> 2 * y Then
 x.EntireRow.Hidden = True
 End If
 Next x
 Range("B20" ).Select
 End Select


 Case Is = Range("B20" ).Address
 Select Case Target.Value
 Case "1"
 Rows("30:30" ).EntireRow.Hidden = True
 Range("H20" ).Select
 Case "2"
 Rows("30:30" ).EntireRow.Hidden = False
 Range("B22" ).Select
 End Select
 End Select
 End If

 End Sub

(Publicité)
 Page :
1

Aller à :
 

Sujets relatifs
probléme ordi Petit questionnaire sur VBA (Résolu)
Problème Fonction Recherche MACRO Probleme de lenteur de site internet
Problème avec IE pour télécharger fichier Macro pour rechercher l'adresse d'une case
Problème avec les fonctions Problème centre de sécurité windows
copier des lignes dans un autre onglet avec une macro Problème avec script PHP/MySQL de license
Plus de sujets relatifs à : Problème macro avec VBA

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
Recrutement Projet Sérieux 0
problemes avec la fonction mail en php 2
java (j'ai besoin d'aide) 0
java (j'ai besoin d'aide) 0
java (j'ai besoin d'aide) 0