Supprimer ligne si 2 lignes vides d'affilé

Résolu
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014 - 27 avril 2010 à 11:08
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.

15 réponses

houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 14:50
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
3
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
4 mai 2010 à 10:52
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
3
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 11:38
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
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
27 avril 2010 à 12:54
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 13:47
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
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
27 avril 2010 à 13:54
Moi toujours pas...
J'ai ça à l'écran :
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 14:39
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
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
27 avril 2010 à 14:51
Quand je mets 10000 ça marche mais le test est beaucoup trop long ...
Je peux faire quoi pour que ça soit plus rapide ?

Cordialement
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 14:57
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
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
27 avril 2010 à 15:15
Le test sur la 2ème colonne fonctionne effectivement, je pense que ça devrait aller comme ca !
Merci beaucoup !
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
27 avril 2010 à 15:30
De rien peut tu juste mettre réponse accepté, pour que le sujet soit clos
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
4 mai 2010 à 07:35
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
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
4 mai 2010 à 09:34
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
0
Everlast03 Messages postés 29 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 8 décembre 2014
4 mai 2010 à 09:36
En fait j'me suis trompé! J'veux faire un test sur F...
0
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
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 ...
0