Supprimer ligne si 2 lignes vides d'affilé [Résolu]

Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
- - Dernière réponse : Everlast03
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
- 4 mai 2010 à 10:59
Bonjour,

Je suis stagiaire dans une entreprise et débutant en VB. Lors de mon projet je dois automatiser le remplissage d'un procès verbal.
Pour ce faire j'ai plusieurs macro à créer.
Je voudrais savoir comment je dois faire pour que :
[list]
Lorsque 2 lignes d'affilé sont vides, en supprimer une.
/list

Merci d'avance.
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
3
Merci
t'a pas de données dans ta première colonne, tu veux tester sur la 2éme colonne:
Sub supprimer_2lignesvides()
Dim ligne, colonne, compteur As Integer
'test effectué sur la 1ére colonne
colonne = 2
ligne = 1
'trouve le numéro de la dernière ligne non vide pour limiter la boucle
compteur = Columns("B:B").Find("*", Cells(ligne, colonne), , , xlByRows, xlPrevious).Row
For ligne = 1 To compteur
'si les 2 lignes sont vides on efface une ligne
If IsEmpty(Cells(ligne, colonne)) True And IsEmpty(Cells(ligne + 1, colonne)) True Then
Rows(ligne & ":" & ligne).Delete Shift:=xlUp
End If
Next
End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de houtas
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
3
Merci
très facile F est la 6éme colonne, donc deux modif à faire
colonne = 6
et compteur = Columns("F:F").Find
Maintenant tu dois voir la logique de ce bout de code est l'adapter

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de houtas
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
0
Merci
Voici la boucle qui répond à tes attentes, pour info le contrôle se fait sur la 1ére ligne
Sub supprimer_2lignesvides()
Dim ligne, colonne, compteur As Integer
'test effectué sur la 1ére colonne
colonne = 1
ligne = 1
'trouve le numéro de la dernière ligne non vide pour limiter la boucle
compteur = Columns("A:A").Find("*", Cells(ligne, colonne), , , xlByRows, xlPrevious).Row
For ligne = 1 To compteur
'si les 2 lignes sont vides on efface une ligne
If IsEmpty(Cells(ligne, colonne)) True And IsEmpty(Cells(ligne + 1, colonne)) True Then
Rows(ligne & ":" & ligne).Delete Shift:=xlUp
End If
Next
End Sub
Commenter la réponse de houtas
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
Merci pour ta réponse si rapide, cependant quand je veux lancer ma macro il me dit qu'il y à un problème avec la ligne suivante (erreur 91) :

compteur = Columns("A:A").Find("*", Cells(ligne, colonne), , , xlByRows, xlPrevious).Row

Peux-tu m'en dire plus ?

Merci d'avance !
Commenter la réponse de Everlast03
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
0
Merci
chez moi ca marche, tu n'a pas oublié une variable par hasard, essaye cette ligne à la place
compteur = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
Commenter la réponse de houtas
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
Moi toujours pas...
J'ai ça à l'écran :
Commenter la réponse de Everlast03
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
0
Merci
le compteur sert juste à trouver la dernière ligne, fais un test met compteur=10000 par exemple et regarde si ca marche, si tu est sur excel 2003 ru met 65536, mais ce qui est dommage c'est la perte de temps tu va parcourir autant de ligne alors que si ca se trouve tu dépassera jamais les 10000 lignes
Commenter la réponse de houtas
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
Quand je mets 10000 ça marche mais le test est beaucoup trop long ...
Je peux faire quoi pour que ça soit plus rapide ?

Cordialement
Commenter la réponse de Everlast03
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
0
Merci
pour aller plus vite il faut trouver le bon nombre de lignes à parcourir tu peux rajouter
application.srceenupdating=false au début de la procédure et application.screenupdating=true à la fin cela désactive le raffraichissement de l'écran excel et permet de gagner du temps
Commenter la réponse de houtas
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
Le test sur la 2ème colonne fonctionne effectivement, je pense que ça devrait aller comme ca !
Merci beaucoup !
Commenter la réponse de Everlast03
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
0
Merci
De rien peut tu juste mettre réponse accepté, pour que le sujet soit clos
Commenter la réponse de houtas
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
Pourrais tu me dire comment faire le test sur la colonne B ? J'ai toujours un problème ...
Voici mon code :
Sub supprimer_2lignesvides()
Sheets("Rotor").Select
Dim ligne, colonne, compteur As Integer


'test effectué sur la 4ème colonne
colonne = 4
ligne = 1
'trouve le numéro de la dernière ligne non vide pour limiter la boucle
compteur = Columns("D:D").Find("*", Cells(ligne, colonne), , , xlByRows, xlPrevious).Row
For ligne = 1 To compteur
'si les 2 lignes sont vides on efface une ligne
If IsEmpty(Cells(ligne, colonne)) True And IsEmpty(Cells(ligne + 1, colonne)) True Then
Rows(ligne & ":" & ligne).Delete Shift:=xlUp
End If
Next
End Sub
Commenter la réponse de Everlast03
Messages postés
116
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
29 août 2013
0
Merci
Dans ce code tu test sur ta colonne D, remplace
colonne = 2
et compteur = Columns("B:B").Find
et le test sera sur la 2éme colonne
Commenter la réponse de houtas
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
En fait j'me suis trompé! J'veux faire un test sur F...
Commenter la réponse de Everlast03
Messages postés
29
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
8 décembre 2014
0
Merci
J'avais bien compris oui ...
Mais je j'ai du me tromper ...
Compter jusque 6 c'est bien plus dur que ce que je croyais
Merci beaucoup ...
Commenter la réponse de Everlast03