Microsoft 365 effacement conditionnel d'une plage de cellules

1636alain

XLDnaute Nouveau
Dans le fichier Base apports multiples, nous établissons un bon d’apport et l’enregistrons dans l’onglet : En_cours_apports_multiples ».
Dans la partie haute du tableau (lignes 2 à 50), nous enregistrons chacun des apports. La base est triée, d’après le nom de l’apporteur, puis en fonction de la date de l’apport.
Dans la partie centrale (lignes 52 à 83), nous totalisons par apporteur ses apports.
Dans la partie basse (ligne 86), nous rapatrions les données qui nous sont nécessaires au paiement. Cela est fait en inscrivant dans la partie centrale, un « x « devant le nom de l’apporteur à payer. Il est à noter que ces données, sont exportées vers un autre fichier, avec lequel nous imprimerons le bon récapitulatif des apports et traiterons les données afin de permettre la tenue du Livre de Police, puisque l’entreprise doit tenir un tel registre.
Ma question est la suivante :
» comment dans la partie haute du tableau (lignes A2 à A50) puis-je effacer les plages de cellules qui correspondent à l’apporteur que l’on vient de régler, pour les colonnes A à U ? ».
Les plages de cellules ainsi effacées seront rejetées après la dernière plage renseignée, puisqu’à chaque nouvelle inscription, cette partie du tableau est retriée.
La plage de cellules dans la partie « solde », correspondant à celles qui viennent d’être effacées, sera de ce fait mise à zéro. Là encore un tri à mettre en place, par analogie au tri qui existe déjà, repositionnera cette plage de cellules après la dernière plage de cellules renseignée.
A noter que dans la colonne V, j’ai fait figurer un n° d’ordre, qui est aussi rapatrié dans la partie centrale et dans la partie basse du tableau. Cette colonne n’est pas triée lors de l’enregistrement dans la base.
Cet élément est peut-être utile à la résolution du problème.

J’ai bien écrit une macro « Effacement_de_données », mais elle ne fonctionne pas correctement.

Merci par avance de vos propositions de solutions.
 

Oneida

XLDnaute Impliqué
Bonjour,
mais elle ne fonctionne pas correctement.
Les Noms sont seulement en colonne B

VB:
With Sheets("En_cours_apports_multiples")
        Set Plage = .Range("B2:B50")
        Nom = .Range("B86")
        For Each cel In Plage
            If cel = Nom Then
                  .Range("A" & cel.Row).Resize(, 21).ClearContents
            End If
        Next
    End With
J'ai aussi revu le tri A1:U50 avec ce que j'ai compris.
Par contre pour la Plage A52:U83 comprends pas car vous avez des formules et apres le tri en colone B #NOM?
 
Dernière édition:

1636alain

XLDnaute Nouveau
La macro ne fonctionne pas correctement. J'ai pris pour test d'effacer les données de MANUSTAN. En résultat, elle efface 3 des 4 lignes "MANUSTAN" (lignes 10, 11, 13), elle conserve la ligne 12 et elle efface toutes les lignes classées après MANUSTAN (lignes 14 à 28).
 

1636alain

XLDnaute Nouveau
Désolé, mais je ne sais ce qui s'est passé mais en réessayant, la macro a parfaitement fonctionné.

L'effacement des lignes de l'apporteur dans la plage A2:50, provoque l'effacement de la ligne correspondant dans la plage A52:U83. Dans cette plage je me retrouve donc avec des lignes avec des données et une ligne sans données. Je fais donc un tri pour rejeter la ligne sans données, après la dernière ayant des données.

Je vais procéder à d'autres simulations pour voir si tout reste correct et d'ici la fin de la semaine je renverrai un message pour clore ou non cette discussion.

Il me reste à vous remercier vivement de m'avoir consacré du temps. Je vous en suis extrêmement reconnaissant.

Cordialement
 

Discussions similaires

Réponses
46
Affichages
845

Statistiques des forums

Discussions
312 184
Messages
2 086 007
Membres
103 088
dernier inscrit
Psodam