Suppression de ligne sous excel
Résolu
fraenrir
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
fraenrir Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
fraenrir Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai 2 tables de pseudo( chacune sur un feuille).
Le but est de supprimer les lignes de la feuille 2 quand les pseudos existe déjà dans la feuille 1.
Ayant peu de connaissance sous Vba je patauge .
j'ai pour l'instant fait :
Sub supp()
Dim val1, val2 As Integer
Dim i, j, imax2, imax1 As Integer
Dim t, p As Integer
i = 3
j = 3
imax1 = 1728
imax2 = 2157
p = 0
t = 0
For t = Feuil2.Cells(0, i) To Feuil2(0, imax1) Step 1
val1 = Feuil1.Cells(0, i)
i = i + 1
For p = Feuil1.Cells(0, i) To Feuil1(0, imax2) Step 1
val2 = Feuil1.Cells(0, i)
j = j + 1
If val1 = val2 Then
Feuil2.Rows(i).Delete
End If
Next
Next
End Sub
Bien sur sa ne marche pas!!
Donc si quelqu'un peu m'aider.
Merci d'avance.
J'ai 2 tables de pseudo( chacune sur un feuille).
Le but est de supprimer les lignes de la feuille 2 quand les pseudos existe déjà dans la feuille 1.
Ayant peu de connaissance sous Vba je patauge .
j'ai pour l'instant fait :
Sub supp()
Dim val1, val2 As Integer
Dim i, j, imax2, imax1 As Integer
Dim t, p As Integer
i = 3
j = 3
imax1 = 1728
imax2 = 2157
p = 0
t = 0
For t = Feuil2.Cells(0, i) To Feuil2(0, imax1) Step 1
val1 = Feuil1.Cells(0, i)
i = i + 1
For p = Feuil1.Cells(0, i) To Feuil1(0, imax2) Step 1
val2 = Feuil1.Cells(0, i)
j = j + 1
If val1 = val2 Then
Feuil2.Rows(i).Delete
End If
Next
Next
End Sub
Bien sur sa ne marche pas!!
Donc si quelqu'un peu m'aider.
Merci d'avance.
A voir également:
- Suppression de ligne sous excel
- Forcer suppression fichier - Guide
- Aller à la ligne excel - Guide
- Partage de photos en ligne - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
8 réponses
Bonjour
essaies cette procédure
essaies cette procédure
Sub pseudoendouble() Dim col_sh1 As Byte, col_sh2 As Byte Dim derlig As Long, cptr As Long, lig As Long Dim pseudo As String 'initialisation des colonnes (colonne C dans cet exemple) col_sh1 = 3 col_sh2 = 3 'fige le défilement de l'écran Application.ScreenUpdating = False With Sheets(1) 'denière ligne dans la feuil1 derlig = .Cells(65536, col_sh1).End(xlUp).Row For cptr = 1 To derlig pseudo = .Cells(cptr, col_sh1) With Sheets(2) 'si pseudo est dans la feuil2 (nombre =1) If Application.CountIf(.Columns(col_sh2), pseudo) = 1 Then 'ligne ou se trouve le doublon dans feiuill2 lig = .Columns(col_sh2).Find(pseudo, .Cells(65536, col_sh2)).Row 'suppression de la ligne Rows(lig).Delete End If End With Next End With 'défige l'écran Application.ScreenUpdating = True MsgBox "suppression des pseudos en feuil2 réussie" End Sub
Merci de ta réponse aussi rapide.
j'ai juste changer
col_sh1 = 3
col_sh2 = 3
par
col_sh1 = 1
col_sh2 = 1
Car les caractère se trouve dans la colonne a.
Le seule problème c'est que sa les a retiré dans la feuille 1 alors que je voulais dans la feuille 2.
j'ai juste changer
col_sh1 = 3
col_sh2 = 3
par
col_sh1 = 1
col_sh2 = 1
Car les caractère se trouve dans la colonne a.
Le seule problème c'est que sa les a retiré dans la feuille 1 alors que je voulais dans la feuille 2.
J'avais faim! (excuse facile)
ajoute cette ligne en gras
'initialisation des colonnes (colonne C dans cet exemple)
col_sh1 = 3
col_sh2 = 3
Sheets(2).Activate
ajoute cette ligne en gras
'initialisation des colonnes (colonne C dans cet exemple)
col_sh1 = 3
col_sh2 = 3
Sheets(2).Activate
Bon problème régler cela dit je ne comprend pas tout .
Te serait il possible de m'expliquer quelque truc.
Encore Merci.
Te serait il possible de m'expliquer quelque truc.
Encore Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
1/ pour les variables
Byte est un type d'entiers entre 1 et 256 (ou 0 et 255); XL<2007 comporte 256 colonnes donc Byte suffit
par contre, pour les lignes on peut avoir 65536 et integer ne va qu'à 2^7.Sur les forums où on ne sait pas le nombre de lignes utilisés, on met un "long" mais c'est à toi de décider byte, integer, long suivant ton appli
Le + léger étant le + profitable (occupation mémoire) mais sur des petites macros on s'en moque un peu...
2/ With
aide microsoft:
"L'instruction With permet de spécifier un objet ou un type défini par l'utilisateur pour une série d'instructions. Les instructions With accélèrent l'exécution des procédures et permettent d'éviter des saisies répétitives."*
sans le with on aurait
D'autre part, cela évite de basculer d'une feuille à une autre plusieurs fois par macro avec des "actrvate" ou "select" très lents
Le piège est de ne pas oublier ici les points devant les range et cells ou toute autre propriété concerné par l'objet utilisant With . C'est d'ailleurs pour cela que ça effaçait dans sheets(1): oubli du point devant row(lig).delete qui fait que la ligne est supprimée dans la feuille active...
A ce propos, on pouvait se passer de With sheets(2) car on a activé sheets(2) au départ
ce qui donne
tu notreas que le point a disparu dans la ligne en italique
Byte est un type d'entiers entre 1 et 256 (ou 0 et 255); XL<2007 comporte 256 colonnes donc Byte suffit
par contre, pour les lignes on peut avoir 65536 et integer ne va qu'à 2^7.Sur les forums où on ne sait pas le nombre de lignes utilisés, on met un "long" mais c'est à toi de décider byte, integer, long suivant ton appli
Le + léger étant le + profitable (occupation mémoire) mais sur des petites macros on s'en moque un peu...
2/ With
aide microsoft:
"L'instruction With permet de spécifier un objet ou un type défini par l'utilisateur pour une série d'instructions. Les instructions With accélèrent l'exécution des procédures et permettent d'éviter des saisies répétitives."*
sans le with on aurait
derlig = sheets(1).Cells(65536, col_sh1).End(xlUp).Row For cptr = 1 To derlig pseudo = sheets(1).Cells(cptr, col_sh1)
D'autre part, cela évite de basculer d'une feuille à une autre plusieurs fois par macro avec des "actrvate" ou "select" très lents
Le piège est de ne pas oublier ici les points devant les range et cells ou toute autre propriété concerné par l'objet utilisant With . C'est d'ailleurs pour cela que ça effaçait dans sheets(1): oubli du point devant row(lig).delete qui fait que la ligne est supprimée dans la feuille active...
A ce propos, on pouvait se passer de With sheets(2) car on a activé sheets(2) au départ
ce qui donne
sheets(2).activate ... pseudo = .Cells(cptr, col_sh1) 'si pseudo est dans la feuil2 (nombre =1) If Application.CountIf(Columns(col_sh2), pseudo) = 1 Then 'ligne ou se trouve le doublon dans feiuill2 lig = Columns(col_sh2).Find(pseudo, Cells(65536, col_sh2)).Row 'suppression de la ligne Rows(lig).Delete End If Next ...
tu notreas que le point a disparu dans la ligne en italique