Se connecter / S'enregistrer
Votre question

Macro Excel pour supprimer des lignes

Tags :
  • Microsoft Excel
  • Logiciels
Dernière réponse : dans Logiciels
4 Juillet 2008 12:00:16

Bonjour tout le monde !!

Je pense que la macro n'est pas compliquée mais je ne connais pas du tout la VBA et je n'ai rien trouvé sur le web pour m'aider.

J'ai en fait une liste de clients en colonne A et j'aimerais qu'avant d'éditer le ducoment, je puisse me servir d'une macro pour virer toute les lignes où un certain champs n'est pas défini.

Exemple sur la capture suivante:



J'aimerais par exemple que si le Nombre de colis de Client 3 n'est pas défini, la ligne soit supprimée.

J'espère que j'ai été assez clair.
Je compte sur vous les gens s'il vous plait !!

Merci d'avance :) 

Autres pages sur : macro excel supprimer lignes

4 Juillet 2008 13:36:11

Salut, Xibalba

Essaie ceci:
  1. Sub SupprimerLignes()
  2. Const LigneDebut = 1 ' entre 1 et 65536 pour Excel 2003
  3. Const LigneFin = 20 ' entre 1 et 65536 pour Excel 2003
  4. Const ColonneClient = 1 ' entre 1 et 255 pour Excel 2003
  5. Const ColonneNbColis = 3 ' entre 1 et 255 pour Excel 2003
  6. For i = LigneFin To LigneDebut Step -1
  7. If Cells(i, ColonneClient) = "Client 3" And Cells(i, ColonneNbColis) = "" Then
  8. Rows(i & ":" & i).Delete Shift:=xlUp
  9. End If
  10. Next i
  11. End Sub

A toi d'adapter les constantes en début de code avec ton fichier.

Bonne continuation
4 Juillet 2008 15:28:39

Maintenant j'aimerais supprimer 3 lignes au dessus et 3 lignes en dessous d'une certaine ligne ainsi que la ligne concernée. par exemple si ma ligne 4 répond à mon critère, Excel supprime la ligne 1 2 3 4 5 6 7

J'ai donc écris ceci mais ça ne fonctionne pas :

For i = LigneFin To LigneDebut Step -1
If Cells(i, ColonneSsTotal) = "SOUS TOTAL" And Cells(i, ColonneValSsTotal) = "0" Then
Rows(i + 3 & ":" & i + 3).Delete Shift:=xlUp
Rows(i + 2 & ":" & i + 2).Delete Shift:=xlUp
Rows(i + 1 & ":" & i + 1).Delete Shift:=xlUp
Rows(i - 3 & ":" & i - 3).Delete Shift:=xlUp
Rows(i - 2 & ":" & i - 2).Delete Shift:=xlUp
Rows(i - 1 & ":" & i - 1).Delete Shift:=xlUp
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next i


J'avoue que je ne connais pas le sens de (i - 1 & ":" & i - 1).
Je suppose que le shift n'est qu'un décalage de la ligne vers le haut (pour le "Up").
Comment faire s'il vous plait ?

Merci d'avance !
Contenus similaires
8 Juillet 2008 15:34:43

Up
30 Juillet 2008 12:46:31

Salut, Xibalba

Désolé pour le retard, j'étais en congés.
Quand tu supprimes une ligne dans Excel, il ne faut pas oublier que cela décale les lignes qui sont en dessous. Il faut donc commencer par supprimer la ligne la plus "basse" et continuer en remontant jusqu'à la dernière ligne que l'on veut supprimer.
Par ailleurs, en supprimant des lignes, ta boucle va faire des tests inutiles.
Voici ce que je te propose:
  1. i = LigneFin
  2. While i <= LigneDebut
  3. If Cells(i, ColonneSsTotal) = "SOUS TOTAL" And Cells(i, ColonneValSsTotal) = "0" Then
  4. For j = 1 To 7
  5. Rows(i - 3 & ":" & i - 3).Delete Shift:=xlUp
  6. Next j
  7. i = i - 7
  8. End If
  9. i = i - 1
  10. Wend

C'est mieux ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS