Suppression de ligne sous excel
Résolu/Fermé
fraenrir
Messages postés
10
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
26 mai 2010
-
2 juin 2009 à 11:45
fraenrir Messages postés 10 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 26 mai 2010 - 3 juin 2009 à 11:25
fraenrir Messages postés 10 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 26 mai 2010 - 3 juin 2009 à 11:25
A voir également:
- Suppression de ligne sous excel
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Forcer suppression fichier - Guide
- Site de vente en ligne particulier - Guide
- Formule excel - Guide
8 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 juin 2009 à 12:15
2 juin 2009 à 12:15
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
fraenrir
Messages postés
10
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
26 mai 2010
2 juin 2009 à 14:13
2 juin 2009 à 14:13
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 juin 2009 à 14:41
2 juin 2009 à 14:41
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
fraenrir
Messages postés
10
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
26 mai 2010
2 juin 2009 à 14:47
2 juin 2009 à 14:47
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 juin 2009 à 14:48
2 juin 2009 à 14:48
Quels trucs ?
fraenrir
Messages postés
10
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
26 mai 2010
2 juin 2009 à 18:34
2 juin 2009 à 18:34
En quoi consiste le With et pourquoi choisir byte ou long pour les variables.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
2 juin 2009 à 21:17
2 juin 2009 à 21:17
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
fraenrir
Messages postés
10
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
26 mai 2010
3 juin 2009 à 11:25
3 juin 2009 à 11:25
Ok merci beaucoup pour ton explication , j'ai tout compris....