Masquer plusieurs nom dans un tableau

Bonjour à tous

Je suis actuellement entrain de travailler sur un projet

mon soucis est que j'ai des données qui proviennent de tout nos site du mond entier

mais il faut que je garde uniquement les notres

J'ai actuellement 5 sites à supprimer dans mon tableau

Merci de votre aide

Voici un bout de code qui SI le site est " Toulouse " il me masque le site

Status = "Toulouse"

    Ligne = 3 'numéro de la premiere ligne à lire
    'Recherche sur toute la plage défini
    ColNom = [A2:DV2].Find(what:="Site", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Column

    ' boucle tant que la cellule Nom comporte quelque chose
While Cells(Ligne, 1) <> ""

   ' premet de filtré suivant le status
     If InStr(1, LCase(Cells(Ligne, ColNom).Value), LCase(Status)) = 1 Then
        Rows(Ligne).Select
       Selection.EntireRow.Hidden = True
     End If

     Ligne = Ligne + 1
Wend ' fin boucle
15classeur1.xlsx (10.23 Ko)

Hello,

Je ne sais pas si j'ai bien compris, mais teste comme ceci...

Sub test()

    Dim status(2) As String
    Dim i As Integer

    Application.ScreenUpdating = False

    'Éléments à masuer
    'L'index d'un tableau commence à 0
    status(0) = "Toulouse"
    status(1) = "Singapour"

    Ligne = 3 'numéro de la premiere ligne à lire
   'Recherche sur toute la plage défini
   ColNom = [A2:DV2].Find(what:="Site", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Column

    ' boucle tant que la cellule Nom comporte quelque chose
    While Cells(Ligne, 1) <> ""
        For i = 0 To 1 'Boucle de 0 à 1 (pour deux items) <- 0 = 1, 1 = 2, 2 = 3... etc)
            ' premet de filtré suivant le status
            If InStr(1, LCase(Cells(Ligne, ColNom).Value), LCase(status(i))) = 1 Then
                Rows(Ligne).Select
                Selection.EntireRow.Hidden = True
            End If
        Next i
        Ligne = Ligne + 1
    Wend ' fin boucle

    Range("A2").Select

    Application.ScreenUpdating = True

End Sub

Bonjour

Merci c'est ce que je cherche par contre il met impossible de masquer plusieur sites différents car actuellement c'est que 2 et impossible de modifier le nombre ...

y a t il pas un autre moyen pour masqué de 2 à 10 nom ?

ou alors peut etre plus facile c'est de carrément supprimé les lignes qui portent tel où tel nom

Merci de votre aide

Bonjour

Je ne comprends pas, cela ressemble à une de tes demandes, filtrer sur plusieurs noms, et tu avais noté que tu avais la solution

Pourquoi ne pas utiliser la même chose ?

Surtout si j'avais compris tu choisissais la colonne et les éléments à filtrer

EDIT : Désolé Hulk je ne t'avais pas vu

Sinon si tu veux rajouter des noms dans le code de Hulk

Il faut que rentres ces noms en dur

   status(0) = "Toulouse"
    status(1) = "Singapour"
   status(2) = "ici"
    status(3) = "la-bas"
' etc ...

Et tu modifies cette ligne

Avant

For i = 0 To 1 'Boucle de 0 à 1 (pour deux items) <- 0 = 1, 1 = 2, 2 = 3... etc)

Après

For i = 0 To Ubound(status)      'Boucle de 0 à 1 (pour deux items) <- 0 = 1, 1 = 2, 2 = 3... etc)

Hello,

Pour 10 sites...

Remplace :

Dim status(2) As String

Par

Dim status(10) As String

Ça

    'Éléments à masquer
    'L'index d'un tableau commence à 0
    status(0) = "Toulouse"
    status(1) = "Singapour"

Par

    'Éléments à masquer
    'L'index d'un tableau commence à 0
    status(0) = "Toulouse"
    status(1) = "Singapour"
    status(2) = "Nom du site 3"
    status(3) = "Nom du site 4"
    status(4) = "Nom du site 5"
    status(5) = "Nom du site 6"
    status(6) = "Nom du site 7"
    status(7) = "Nom du site 8"
    status(8) = "Nom du site 9"
    status(9) = "Nom du site 10"

Et ça

For i = 0 to 1

Par

For i = 0 to 9 ' Pour 10 éléments et comme l'index du tableau "status()" commence à 0 on va jusqu'à 9 (de 0 à 9 = 10)

Espérant t'avoir aidé.

EDIT : Oups Slt Banzaï !

merci à vous 2 de votre m'aide, le code fonctionne même un peu trop bien ^^

en faite il me supprime tout même les sites non répertoriés dans le code

    Dim status(4) As String
    Dim i As Integer

    Application.ScreenUpdating = False

    'Éléments à masuer
   'L'index d'un tableau commence à 0
    status(0) = "Toulouse"
    status(1) = "Villeurbanne"
    status(2) = "Toronto"
    status(3) = "Velizy"

        Range("A2").Select
    Ligne = 3 'numéro de la premiere ligne à lire
  'Recherche sur toute la plage défini
  ColNom = [A2:DV2].Find(what:="Site Origin", LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns).Column

    ' boucle tant que la cellule Nom comporte quelque chose
   While Cells(Ligne, 1) <> ""
      For i = 0 To UBound(status) ' Pour 10 éléments et comme l'index du tableau "status()" commence à 0 on va jusqu'à 9 (de 0 à 9 = 10)     If InStr(1, LCase(Cells(Ligne, ColNom).Value), LCase(status(i))) = 1 Then
                If InStr(1, LCase(Cells(Ligne, ColNom).Value), LCase(status(i))) = 1 Then
                Rows(Ligne).Select
                Selection.EntireRow.Hidden = True
            End If

        Next i
        Ligne = Ligne + 1
    Wend ' fin boucle

    Application.ScreenUpdating = True

Par contre le

Range("A2").Select

à quoi il sert dans ce code ?

Re,

Il sert juste à "désélectionner" la ligne.

Je crois qu'il y a une ligne de code pour ça mais me rappelle plus.

Pour la désélectionner j'avais trouver un truc comme ça :

ActiveCell.Select

Par contre dans mon code comment cela se fait qu'il me supprime tout mon tableau ? malgré que je lui ai pas dit de supprimé les sites à garder oO

Bon je viens de trouver un code qui permet de supprimer les lignes avec un nom précis et de plus il me met les N° de lignes dans l'ordre, car avant je me trouvais avec du

52

59

65

70

72

73

donc cela me faussait mon code pour les filtres

Voici le code

Sub DelEditeur()

Dim i As Integer

Application.ScreenUpdating = False

    With ThisWorkbook.Sheets("Tableau Brut")
    'Précisez le nom de votre feuille
                For i = .Range("F" & .Rows.count).End(xlUp).Row To 2 Step -1
    'je travaille sur la colonne c
    'Rows.count permet de retourner le nombre de ligne de la plage range
                            If .Range("F" & i).Value = "Toronto" Then
                                       .Rows(i).Delete
                            End If
                Next i
    End With

    Application.ScreenUpdating = True

End Sub

P'tite précision sur ce code

J'ai effectué un test avec plus de 100.000 lignes ... bon le résultat n'est pas top ^^ erreur et bug total de excel

donc a mon avis ne pas dépasser les 32.000 lignes ou alors de mettre la variable en Long

Rechercher des sujets similaires à "masquer nom tableau"