XL 2019 VBA supprimer des lignes en fonction d'une condition

Céline49

XLDnaute Junior
Bonjour,
Je sollicite votre aide. Je recherche à supprimer toutes les lignes dont le continu de la colonne A contient "Facture".
Je me suis inspirée de la proposition de https://olivier-bureautique.blogspot.com/2009/04/excel-2007-vba-supprimer-des-lignes-en.html
mais cela ne fonctionne pas.
Voici comment j'ai rédigé mon code sachant que je n'ai pas besoin de l'appliquer à tous les onglets:

Option Explicit
Dim DerLgn As Integer
Dim Lgn As Integer
Sub test()

For DerLgn = .Cells(Rows.Count, 1).End(xlUp).Row 'on détermine la dernière ligne non vide de la Colonne A
For Lgn = DerLgn To 2 Step -1 'pour chaque ligne en partant du Bas
If .Cells(Lgn, 1) Like "Facture*" Then 'Si la Cellule commence pas par "Facture" on ne fait rien
Else 'Si la Cellule de la Colonne 1 ,ne commence pas par "Facture"
.Cells(Lgn, 1).EntireRow.Delete 'on supprime la Ligne
End If

End Sub

Merci de votre aide
 

Céline49

XLDnaute Junior
Merci beaucoup à toi James007. Elle fonctionne du feu de Dieu! J'ai fait depuis quelques ajustements car je n'avais pas sélectionné la bonne colonne TTC que je pensais avoir en doublon...mais elle n'était pas entièrement identique.
Par contre à quoi sert de redéfinir la dernière ligne avec cette partie:
DerLgn = .Cells(Rows.Count, 1).End(xlUp).Row

As-tu plus simple pour copier des colonnes sur un autre onglet?
https://www.exceltrainingvideos.com/copy-multiple-columns-data-from-worksheet-to-worksheet/
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Une autre méthode très classique par VBA qui est rapide mais avec un code un peu plus compliqué. Les codes sont dans le module de la feuille "bis"

A @James007,
En testant la méthode par "AutoFilter", j'arrive à des incohérences pour un grand nombre de lignes de donnée.
Je ne sais pas si c'est à cause de ma configuration (Excel & config système) ou bien si AutoFilter déraille à partir d'un certain nombre de ligne à filtrer.
Voir dans le fichier (les cas 100 000 lignes et 1 000 000 lignes).
 

Pièces jointes

  • Céline49- supprimer ligne Facture- v1a.xlsm
    38.6 KB · Affichages: 13

James007

XLDnaute Barbatruc
Merci beaucoup à toi James007. Elle fonctionne du feu de Dieu! J'ai fait depuis quelques ajustements car je n'avais pas sélectionné la bonne colonne TTC que je pensais avoir en doublon...mais elle n'était pas entièrement identique.
Par contre à quoi sert de redéfinir la dernière ligne avec cette partie:
DerLgn = .Cells(Rows.Count, 1).End(xlUp).Row

As-tu plus simple pour copier des colonnes sur un autre onglet?
https://www.exceltrainingvideos.com/copy-multiple-columns-data-from-worksheet-to-worksheet/

Ravi que tout fonctionne ... :)

Effectivement, tu as besoin de redéfinir la dernière ligne après la suppression de toutes tes lignes ' facture ' afin que toutes tes nouvelles formules de TVA soient ensuite recopiées sur le bon nombre de lignes ... ( et pas sur le nombre initial bien plus important ...)

Quant à copier des colonnes sur un autre onglet ... comme toujours... le plus simple est de joindre un petit fichier illustratif ... ;)
 
Dernière édition:

Céline49

XLDnaute Junior
Merci pour cette explication. Je travaille toujours sur le même fichier.

Je cherche à dupliquer 3 fois l'onglet "prétravail" dans 3 autres onglets ("Vt", "TVA", "Clt") puis à reclasser l'ordre des colonnes dans les 3 onglets (et à supprimer les colonnes inutiles)
* Pour l'onglet "Vt", réorganiser l'ordre des colonnes pour obtenir l'ordre suivant: Date / Pièce/ Cpte Vente (attention cellule calculée à l'origine) / Nom client / Vide / HT
* Pour l'onglet "TVA", réorganiser l'ordre des colonnes pour obtenir l'ordre suivant: Date / Pièce/ Cpte TVA / Nom client / Vide / TVA (attention cellule calculer)
* Pour l'onglet "Clt", réorganiser l'ordre des colonnes pour obtenir l'ordre suivant: Date / Pièce/ Code client / Nom client / TTC

Et si je veux aller jusqu'au bout... sur un dernier onglet (appelé "écriture") à recopier toutes les données obtenues dans les onglets Vt - TVA- Clt et faire un tri sur le colonne pièce....et enfin j'aurais abouti à mon objectif final !!

J'espère au moins que cette programmation t'amuse car moi c'est un enfer !
 

James007

XLDnaute Barbatruc
Bonsoir Céline,

Ce que tu demandes est bien sûr réalisable ...

Mais j'ai un peu peur que tu te compliques inutilement ... pour des aspects purement cosmétiques ...

En effet, recopier un même onglet à trois reprises avec les mêmes données peut apparaitre contre-productif ...

Peux-tu expliquer l'utilisation finale de tous ces onglets (avec les mêmes données) ... il existe peut-être un chemin plus court pour atteindre ton objectif ...
 

Céline49

XLDnaute Junior
Le but est d'arriver à une écriture comptable tel que l'onglet "écriture" qui est, dans ma logique, la synthèse des onglets ttc/ht/tva avec un tri sur la colonne pièce. En fait, ils correspondent aux différentes manipulations que je dois faire manuellement pour obtenir ce que je veux !
ps: je t'ai remis dans le dernier onglet mes données de base d'origine
si tu veux supprimer le 2ème onglet dans le mode de fonctionnement cela me convient bien car cela pollue peut être un peu le fichier pour rien ! par contre, je veux bien garder en mémoire le fichier de base sans aucune modification.
Bien à toi
 

Pièces jointes

  • Céline_matrice écriture vente.xlsm
    65.3 KB · Affichages: 5

Céline49

XLDnaute Junior
Et encore une autre chose que je ne sais pas faire si je veux aller jusqu'au bout de ce que je veux vraiment. Dans l'écriture finale, je ne voudrais pas avoir plusieurs lignes de compte client pour une même pièce (donc n'avoir que la somme). Idem pour la tva, je voudrais ne voir que la somme pour chaque compte tva d'une même pièce.
ps: 1 seul compte client possible pour une pièce. Par contre, possible d'avoir plusieurs comptes de tva pour une même pièce.
Après cela, je ferais gagner 1h de manip mensuelle à ma comptable !!!
Bien à toi James007
 

James007

XLDnaute Barbatruc
Bonjour,

En ce qui concerne ton dernier message ... je ne vais pas pouvoir t'aider sans que tu ne fournisses une illustration du résultat final des écritures qu'il te faut ...

Entretemps, ci-joint ton dernier fichier ... à tester ...
 

Pièces jointes

  • Test Céline_Matrice.xlsm
    76.8 KB · Affichages: 8

clf

XLDnaute Nouveau
Bonjour,
Je sollicite votre aide. Je recherche à supprimer toutes les lignes dont le continu de la colonne A contient "Facture".
Je me suis inspirée de la proposition de https://olivier-bureautique.blogspot.com/2009/04/excel-2007-vba-supprimer-des-lignes-en.html
mais cela ne fonctionne pas.
Voici comment j'ai rédigé mon code sachant que je n'ai pas besoin de l'appliquer à tous les onglets:

Option Explicit
Dim DerLgn As Integer
Dim Lgn As Integer
Sub test()

For DerLgn = .Cells(Rows.Count, 1).End(xlUp).Row 'on détermine la dernière ligne non vide de la Colonne A
For Lgn = DerLgn To 2 Step -1 'pour chaque ligne en partant du Bas
If .Cells(Lgn, 1) Like "Facture*" Then 'Si la Cellule commence pas par "Facture" on ne fait rien
Else 'Si la Cellule de la Colonne 1 ,ne commence pas par "Facture"
.Cells(Lgn, 1).EntireRow.Delete 'on supprime la Ligne
End If

End Sub

Merci de votre aide
Bonjour,

Sans passer par macro, tu ajoutes une colonne avec une fonction Si :
=Si(gauche(A2;7)="Facture";"x";1)
Ensuite Faire F5 Cellules... --> Formules --> ne laisser cocher que texte
Puis Clic droit sur l'une des cellules Supprimer Ligne entière

Cordialement

Ellilmac
 

Céline49

XLDnaute Junior
James007,
J'ai testé le fichier. J'ai quelques imperfections. Je t'ai mis en surbrillance jaune les problèmes au niveau des onglets Cpte7 / Cpte TVA / Ecritures.
Il s'agit de "report qui ne renvoie pas la bonne donnée" et je t'ai mis également ce que je souhaiterais pour concaténer sur une seule ligne lorsque j'ai un même compte pour une même pièce (n° de facture).
Encore milles merci pour ton investissement.
 

Pièces jointes

  • Test Céline_Matrice.xlsm
    77.7 KB · Affichages: 2

Céline49

XLDnaute Junior
James007, Je n'avais pas encore pris le temps de te dire 1000 mercis pour toute ton aide. Tes dernières formules sont très énigmatiques pour moi...mais c'est sûr elle fonctionne. Il ne me reste plus qu'à tester sur plusieurs données différentes...mais le fichier avec le mois que j'ai testé fonctionne parfaitement.
 

Discussions similaires

Réponses
2
Affichages
329
Réponses
6
Affichages
613

Statistiques des forums

Discussions
315 092
Messages
2 116 118
Membres
112 665
dernier inscrit
JPHD