Probleme de Code VBA

Salut à tous,

je débute en VBA / Excel et m’éclate plutôt pas mal, mais je reste bloqué sur une fonctionnalité depuis plusieurs jours, et je pète les plombs...

J'ai tenté plusieurs moyens d'y arriver mais rien a faire.

Je suis sur un onglet "DISPOS" qui fait référence à des cellules de l'onglet "PERSONNEL".

La formule ci dessous marche très bien, mais je voudrais la réaliser pour les lignes de 9 a 58, en allant vérifier la valeur des cellules de G11 à G60.

donc en gros je suis soit obligé de taper 49 fois ma formule, soit assez malin pour trouver "l'automatisation" (la boucle ?) de tout ca... J'ai essayé avec des variables, avec des Range, avec des Select, mais rien a faire...

Pouvez vous m'aider ?

Merci !

Raph

If [PERSONNEL!G11] = "ACTIF" Then

Rows("9:9").Hidden = False

Else

Rows("9:9").Hidden = True

End If

If [PERSONNEL!G12] = "ACTIF" Then

Rows("10:10").Hidden = False

Else

Rows("10:10").Hidden = True

End If

If [PERSONNEL!G13] = "ACTIF" Then

Rows("11:11").Hidden = False

Else

Rows("11:11").Hidden = True

End If

Bonjour,

Si la cellule contient "ACTIF" la ligne est masquée.

Dans le cas contraire, elle est affichée.

Tu peux le faire avec une boucle while loop ou for next!

Tu devrais peut-être joindre le fichier.

Cordialement

Salut les gars, merci de vos réponses rapides, vous etes trop forts !

Non en fait si la ligne contient le mot ACTIF, elle n'est pas masquée.

Elle l'est si elle contient autre chose.

Ça, ça marche nickel.

La ou je bloque c'est que je voudrais l'automatiser pour une plage de ligne de 9 a 49, chaque ligne allant regarder en G11, puis G12 etc.

PS : j'ai essayé avec FOR NEXT mais ca ne marchait pas.

Je sais pas si je suis clair..

je l'ai tenté comme ca (entre autres...) avec des variables.

Sub CacherLignes()

Dim x1 As Integer

For x1 = 0 To 49

Dim x2 As Integer

x2 = x1 + 9

If [PERSONNEL!G11] + "x1" = "ACTIF" Then

Rows(x2).Hidden = False

Else

Rows(x2).Hidden = True

End If

Avec FOR NEXT,

j'avais tenté un truc du genre

Sub Cacher Lignes

For Num_Rows = 9 To 49

If [PERSONNEL!$G11] = "ACTIF" Then

Rows("9:49").Hidden = False

Else

Rows("9:49").Hidden = True

End If

Next

End Sub

à tester:

Dim L
For Each L In Range("G9:G60")
   If L = "ACTIF" Then
     Cells(L.Row).EntireRow.Hidden = False
   Else
     Cells(L.Row).EntireRow.Hidden = True
   End If
Next

Attention que la variable L ne soit pas utilisée et que la plage G9:G60 est bonne.

Cordialement

À tester

For y = 11 To 60
For i = 9 To 49

If Sheets("PERSONNEL").Range("G" & y).Value = "ACTIF" Then
 Sheets("DISPOS").Rows(i).EntireRow.Hidden = True
 Else

    Sheets("DISPOS").Rows(i).EntireRow.Hidden = False
End If

        Next
    Next

À tester

Dim i As Long
Dim y As Long
For i = 9 To 49

If Sheets("PERSONNEL").Range("G" & i + 2).Value = "ACTIF" Then
    Sheets("DISPOS").Rows(i).EntireRow.Hidden = False
Else
    Sheets("DISPOS").Rows(i).EntireRow.Hidden = True
End If
    Next i

 For y = 52 To 60

 If Sheets("PERSONNEL").Range("G" & y).Value = "ACTIF" Then
    Sheets("DISPOS").Rows(y - 2).EntireRow.Hidden = False
Else
    Sheets("DISPOS").Rows(y - 2).EntireRow.Hidden = True
End If
    Next y

End Sub

En séparant sur 2 boucles ...........

Bonsoir à tous,

je teste ce soir la 3eme proposition. Les 2 autres n'ont pas marché, mais je pense qu'on est pas loin.

Si ça ne marche pas à nouveau, je vous joindrai mon fichier.

Merci encore de votre aide.

re,

Je pensais que ce fil était clos.

Mon exemple fonctionne mais il faut l'adapter à ta situation.

Vois le fichier joint

Bonne soirée

Un retour, est-ce que le problème est résolu ?

Je me permets de répondre sur ton fichier

Ton exemple ne fonctionne pas du tout pour sa situation et n'est pas du tout "adaptable" à sa situation non plus.

Premièrement les choses se passent sur 2 feuilles séparées et il ne cherche pas du tout à cacher les lignes actives sur la feuille, mais plutôt des lignes qui n'ont pas le même numéro de ligne et qui ne contient pas nécéssairement le mot "actif" non plus.

Bonjour crackwood01,

Effectivement je viens de relire la demande.

Est-ce que tu as eu un retour pour ta proposition ou faut-il qu'on lui propose autre chose ?

Cordialement

Je n'ai aucun retour .......

Nouvelle proposition:

Sub test()
Dim i%
With Sheets("Personnel")
   For i = .Range("G" & Rows.Count).End(xlUp).Row To 11 Step -1
      If .Cells(i, "G") = "ACTIF" Then
        Sheets("Dispo").Rows(i - 2).EntireRow.Hidden = False
      Else
        Sheets("Dispo").Rows(i - 2).EntireRow.Hidden = True
      End If
   Next i
End With
End Sub

Cordialement

Rechercher des sujets similaires à "probleme code vba"