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
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 SubBonjour
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 StringPar
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 1Par
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 = TruePar 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.SelectPar 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 SubP'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