Sur une feuille 1, j'ai en colonne A des noms d'employ=E9s (jusqu'=E0 150)
et en colonne B et suivantes (le nombre de colonnes varie) des volumes
selon la t=E2che accomplie.
Sur une feuille 2, toujours en colonne A, le superviseur peut =E9crire
des noms d'employ=E9s qui se retrouvent en feuille 1.
Je voudrais qu'en cliquant sur un bouton de commande qu'excel =E9limine
toutes les lignes de la feuille 1 ne correspondant pas aux noms =E9crits
sur la feuille 2. Il se peut qu'il y ait 20, 40, voire 60 noms sur la
feuille 2, et cette plage sera changeant sur une base hebdomadaire....
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour,
Essaie ceci en adaptant le nom des feuilles :
Sheet2 = Feuil1 Sheet3 = Feuil2
Il est supposé que les noms en Feuil1 en colonne A:A n'ont pas de doublons Si sur chaque feuille, tu as une ligne d'étiquette, tu débutes les plages de cellules en A2...
'-------------------------------- Sub test() Dim Rg As Range, Rg1 As Range Dim A As Long, NbLignes As Long, X As Variant
'La feuille de la liste courte With Worksheets("sheet3") 'si tu as une étiquette de colonne, débute en A2 Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) End With
'La feuille de la liste longue (complète) With Sheet2 'si tu as une étiquette de colonne, débute en A2 Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row) End With
'Nom de ligne dans la feuille complète NbLignes = Rg1.Rows.Count
'En commençant par la fin, une boucle sur 'les 150 employés
For A = NbLignes To 1 Step -1 'Un test pour savoir si leur nom figure en Sheet3 X = Application.Match(Rg1(A, 1).Value, Rg, 0) If IsError(X) Then 'Si erreur, le nom est absent dans Sheet3, suppression Err = 0 'Suppression de la ligne complète Rg1(A, 1).EntireRow.Delete xlUp End If Next Set Rg = Nothing: Set Rg1 = Nothing End Sub '--------------------------------
"Denys" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Sur une feuille 1, j'ai en colonne A des noms d'employés (jusqu'à 150) et en colonne B et suivantes (le nombre de colonnes varie) des volumes selon la tâche accomplie.
Sur une feuille 2, toujours en colonne A, le superviseur peut écrire des noms d'employés qui se retrouvent en feuille 1.
Je voudrais qu'en cliquant sur un bouton de commande qu'excel élimine toutes les lignes de la feuille 1 ne correspondant pas aux noms écrits sur la feuille 2. Il se peut qu'il y ait 20, 40, voire 60 noms sur la feuille 2, et cette plage sera changeant sur une base hebdomadaire....
Auriez-vous une idée ?
Merci pour votre temps
Denys
Bonjour,
Essaie ceci en adaptant le nom des feuilles :
Sheet2 = Feuil1
Sheet3 = Feuil2
Il est supposé que les noms en Feuil1 en colonne A:A n'ont pas de doublons
Si sur chaque feuille, tu as une ligne d'étiquette, tu débutes les plages de
cellules en A2...
'--------------------------------
Sub test()
Dim Rg As Range, Rg1 As Range
Dim A As Long, NbLignes As Long, X As Variant
'La feuille de la liste courte
With Worksheets("sheet3")
'si tu as une étiquette de colonne, débute en A2
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
'La feuille de la liste longue (complète)
With Sheet2
'si tu as une étiquette de colonne, débute en A2
Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With
'Nom de ligne dans la feuille complète
NbLignes = Rg1.Rows.Count
'En commençant par la fin, une boucle sur
'les 150 employés
For A = NbLignes To 1 Step -1
'Un test pour savoir si leur nom figure en Sheet3
X = Application.Match(Rg1(A, 1).Value, Rg, 0)
If IsError(X) Then
'Si erreur, le nom est absent dans Sheet3, suppression
Err = 0
'Suppression de la ligne complète
Rg1(A, 1).EntireRow.Delete xlUp
End If
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'--------------------------------
"Denys" <denys.perreault@rbc.com> a écrit dans le message de groupe de discussion :
6d3f1e17-54fe-43d2-bcfa-fac57100ab4c@k30g2000vbn.googlegroups.com...
Bonjour à tous,
Sur une feuille 1, j'ai en colonne A des noms d'employés (jusqu'à 150)
et en colonne B et suivantes (le nombre de colonnes varie) des volumes
selon la tâche accomplie.
Sur une feuille 2, toujours en colonne A, le superviseur peut écrire
des noms d'employés qui se retrouvent en feuille 1.
Je voudrais qu'en cliquant sur un bouton de commande qu'excel élimine
toutes les lignes de la feuille 1 ne correspondant pas aux noms écrits
sur la feuille 2. Il se peut qu'il y ait 20, 40, voire 60 noms sur la
feuille 2, et cette plage sera changeant sur une base hebdomadaire....
Il est supposé que les noms en Feuil1 en colonne A:A n'ont pas de doublons Si sur chaque feuille, tu as une ligne d'étiquette, tu débutes les plages de cellules en A2...
'-------------------------------- Sub test() Dim Rg As Range, Rg1 As Range Dim A As Long, NbLignes As Long, X As Variant
'La feuille de la liste courte With Worksheets("sheet3") 'si tu as une étiquette de colonne, débute en A2 Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row) End With
'La feuille de la liste longue (complète) With Sheet2 'si tu as une étiquette de colonne, débute en A2 Set Rg1 = .Range("A1:A" & .Range("A65536").End(xlUp).Row) End With
'Nom de ligne dans la feuille complète NbLignes = Rg1.Rows.Count
'En commençant par la fin, une boucle sur 'les 150 employés
For A = NbLignes To 1 Step -1 'Un test pour savoir si leur nom figure en Sheet3 X = Application.Match(Rg1(A, 1).Value, Rg, 0) If IsError(X) Then 'Si erreur, le nom est absent dans Sheet3, suppression Err = 0 'Suppression de la ligne complète Rg1(A, 1).EntireRow.Delete xlUp End If Next Set Rg = Nothing: Set Rg1 = Nothing End Sub '--------------------------------
"Denys" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Sur une feuille 1, j'ai en colonne A des noms d'employés (jusqu'à 150) et en colonne B et suivantes (le nombre de colonnes varie) des volumes selon la tâche accomplie.
Sur une feuille 2, toujours en colonne A, le superviseur peut écrire des noms d'employés qui se retrouvent en feuille 1.
Je voudrais qu'en cliquant sur un bouton de commande qu'excel élimine toutes les lignes de la feuille 1 ne correspondant pas aux noms écrits sur la feuille 2. Il se peut qu'il y ait 20, 40, voire 60 noms sur la feuille 2, et cette plage sera changeant sur une base hebdomadaire....