Deux actions dans fonctions If

Bonjour,

Je tente désespérément d'accomplir 2 actions dans ma fonction If.. je ne sais pas si c'est possible.

explication de ma macro : je recherche la cellule dans la plage P1 à CN58 dont le texte contient la même chose qu'en cellule K13.
Jusque là tout va bien. Si elle ne la trouve pas en démarrant en P1 elle passe à la 2eme colonne. Par contre, ce que je voudrais ajouter, c'est dès qu'il trouve la colonne correspondante, que toutes les lignes vides de cette même colonne se masquent.

Sub trouve()

'déclaration de variables
Dim Cptr As Byte, NbLi As Byte

'sélectionner tout le tableau
Range("P1:CN58").Select

'compter nb de lignes dans le tableau
NbLi = Selection.Rows.Count

'se placer en P1
Range("P1").Select

eqpts = Range("K13")

'début de boucle
For Cptr = 1 To NbLi

    'déterminer si la cellule active = eqpts alors
    If ActiveCell = eqpts Then

    'selectionner la colonne entière
    ActiveCell.EntireColumn.Select

    'sinon se déplacer sur la colonne suivante
    Else
    ActiveCell.Offset(0, 1).Select
    End If

'fin de boucle
Next Cptr

End Sub

Merci d'avance pour votre aide,

Lison

Bonjour,

Par contre, ce que je voudrais ajouter, c'est dès qu'il trouve la colonne correspondante, que toutes les lignes vides de cette même colonne se masquent.

Désolé, mais c'est impossible... ou je n'ai pas compris !

Si tu masques la ligne d'une colonne, c'est la ligne de toutes les colonnes que tu masques !?

@+

Bonjour,

Comme l'a dit Bruno, on ne peut masquer que la ligne entière. Si c'est votre souhait, voici un code qui devrait vous permettre d'y parvenir :

Sub trouve()

Dim eqpts$ 'variable supposée de texte dans le doute
Dim plage as range, cell as Range
Dim NbLi%, IndexCol%, i%

eqpts = Range("K13").value
Set plage = Range("P1:CN58") 'tableau de recherche
NbLi = plage.rows.count 'Nombre de lignes de plage

'début de boucle (Parcourt toutes les cellules du tableau (cad chaque cellule de chaque colonne))
For each cell in plage 'pour chaque cellule de plage
  If cell.value = eqpts Then 'si la cellule a la valeur de eqpts
    IndexCol = cell.column 'IndexCol renvoie le numéro de colonne de cette cellule
    For i = 1 to NbLi 'pour chaque cellule de cette même colonne (ou plutôt pour les lignes 1 à NbLi)
      If cells(i, IndexCol).value = "" Then 'si la cellule (en ligne i et en colonne IndexCol) est vide
        Rows(i).Entirerow.hidden = true 'masquer la ligne entière
      End if
    Next i 'prochaine ligne sur la colonne IndexCol
  End If
Next cell 'prochaine cellule sur le tableau plage

End Sub

Cordialement,

Bonjour

c'est bien les lignes entières que je veux masquer, désolée je n'avais pas précisé !

Grace à vos réponses et à mes recherches j'ai trouvé une solution :)

merci à vous !

Rechercher des sujets similaires à "deux actions fonctions"