Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trier des lignes contenant des formules

  • Initiateur de la discussion Initiateur de la discussion Aloha
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Aloha

XLDnaute Accro
Bonjour,

Comment faire pour que, lorsque je trie des lignes contenant des formules dans Feuil2 (pour afficher les noms) dans le fichier joint dont certaines n'affichent aucune valeur, d'autres des valeurs, les lignes n'affichant aucune valeur soient en-dessous de celles qui contiennent des valeurs?
Je veux que, après le tri, la Feuil2 se présente comme la Feuil3, c'est-à-d. sans les lignes vides. Ou, mieux encore, que les noms pour lesquels il n'y a pas de valeurs, ne s'affichent pas non plus, comme dans la Feuil4.

Le mieux serait de procéder par VBA, ou non?

Merci pour toute aide

Aloha
 

Pièces jointes

Dernière édition:
Re : Trier des lignes contenant des formules

Re,
Ou, mieux encore, que les noms pour lesquels il n'y a pas de valeurs, ne s'affichent pas non plus, comme dans la Feuil4.

j'avais réalisé le fichier sans avoir vu la modification de la question
voici

à+
Philippe
 

Pièces jointes

Dernière édition:
Re : Trier des lignes contenant des formules

Bonjour Philippe,

Cela marche! Merci beaucoup

La seule chose qui n'est pas si pratique, c'est que les données sont copiées dans la même feuille; ce serait mieux si elles l'étaient dans une autre feuille ou même dans un autre classeur.

En réalité j'ai une feuille par mois sur laquelle il faut faire cette opération, mois après mois. J'avais l'intention d'enregistrer une macro pour imprimer janvier, et de la multiplier 11 fois et de l'adapter aux autres mois.

J'ai adapté le fichier pour qu'il soit plus proche de la réalité.
Une précision: Il y a tout un système de bordures et également des couleurs; voilà pourquoi il faut aussi copier les formats.

A+

Aloha
 

Pièces jointes

Re : Trier des lignes contenant des formules

Re,
remplace le code par celui-ci
Code:
Sub Macro1()
Application.ScreenUpdating = False
For doc = 2 To 13
Sheets(doc).Select
 
Dim derligne
ligne = 1
derligne = Range("A65535").End(xlUp).Row
For i = 1 To derligne
    If Range("b" & i).Value <> "" And Range("c" & i).Value <> "" Then
        Range("G" & ligne).Value = Range("A" & i).Value
        Range("H" & ligne).Value = Range("B" & i).Value
        Range("I" & ligne).Value = Range("C" & i).Value
        ligne = ligne + 1
    End If
Next i
' calcul de la somme
For j = 2 To ligne - 1
    Range("H" & ligne).Value = Range("H" & ligne).Value + Range("H" & j).Value
    Range("I" & ligne).Value = Range("I" & ligne).Value + Range("I" & j).Value
Next j
Next doc
Application.ScreenUpdating = True
End Sub
La macro fonctionnera sur toutes les feuilles

For doc = 2 To 13
2 étant le feuille "Janvier"
13 étant la dernière feuille---->décembre
à modifier si tu as moins de feuilles

à+
Philippe
 
Re : Trier des lignes contenant des formules

Re,

Merci beaucoup.
Seulement, -je me suis sûrement mal exprimé- je n'imprime qu'un mois à la fois. Et si je comprends bien ton code il imprime tous les mois.
Qui plus est, il copie toujours dans la même feuille, alors que ce serait mieux si c'était dans une autre feuille ou même un autre classeur (qui peut être effacé une fois la feuille imprimée).

Ce qui n'est pas sans importance non plus: le nombre de colonnes à copier va de A à AP, donc 42 si j'ai bien compté.
A+

Aloha
 
Dernière édition:
Re : Trier des lignes contenant des formules

Re,

J'ai appliqué ton code à mon fichier, et cela marche, sauf que, lorsque j'ajoute le formatage (j'ai ajouté du code, enregistré par macro, qui copie (avec la brosse) le formatage des colonnes originales et qui le colle dans les colonnes copiées). L'inconvénient: j'ai le formatage de toutes les lignes du tableau original, puisque je ne sais pas comment limiter le formatage aux nombres de lignes dans le tableau créé.

Pour les mois j'ai mis en commentaire le code correspondant et j'ai ajouté Sheets("Janvier").Select.

Avec cette méthode je dois évidemment reproduire le code 11 fois!

A+

Aloha
 
Dernière édition:
Re : Trier des lignes contenant des formules

Re,

le fichier en retour
alors que ce serait mieux si c'était dans une autre feuille ou même un autre classeur (qui peut être effacé une fois la feuille imprimée).
c'est maintenant fait

je n'ai pas encore regardé pour " la déco " des cellules on verra après
il y a maintenant les grilles autour des valeurs lors de l'impression
l'important pour l'instant c'est la procédure

à+
Philippe
 

Pièces jointes

Dernière édition:
Re : Trier des lignes contenant des formules

Bonjour Philippe,

Cela fonctionne à merveille! Merci beaucoup.

En essayant de transcriore ton code sur mon projet:

Je n'ai pas que 3 colonnes à copier, mais 42.

Y a-t-il moyen de remplacer

Sheets("IMPRESSION").Range("A" & ligne).Value = Range("A" & i).Value
Sheets("IMPRESSION").Range("B" & ligne).Value = Range("B" & i).Value
Sheets("IMPRESSION").Range("C" & ligne).Value = Range("C" & i).Value
.
.
.
Sheets("IMPRESSION").Range("AP" & ligne).Value = Range("AP" & i).Value

par un For ...Next?

Je n'arrive d'ailleurs pas à copier le Userform.

Pour le reste je continue ma transcription

A+

Aloha
 
Dernière édition:
Re : Trier des lignes contenant des formules

Re,
il y a effectivement moyen de paramétrer cela dans une boucle supplémentaire et imbriquée
en utilisant Range(Cells(.......) , Cells(...))
ou alors, copie ci-dessous et colle dans ton code

Sheets("IMPRESSION").Range("A" & ligne).Value = Range("A" & i).Value
Sheets("IMPRESSION").Range("B" & ligne).Value = Range("B" & i).Value
Sheets("IMPRESSION").Range("C" & ligne).Value = Range("C" & i).Value
Sheets("IMPRESSION").Range("D" & ligne).Value = Range("D" & i).Value
Sheets("IMPRESSION").Range("E" & ligne).Value = Range("E" & i).Value
Sheets("IMPRESSION").Range("F" & ligne).Value = Range("F" & i).Value
Sheets("IMPRESSION").Range("G" & ligne).Value = Range("G" & i).Value
Sheets("IMPRESSION").Range("H" & ligne).Value = Range("H" & i).Value
Sheets("IMPRESSION").Range("I" & ligne).Value = Range("I" & i).Value
Sheets("IMPRESSION").Range("J" & ligne).Value = Range("J" & i).Value
Sheets("IMPRESSION").Range("K" & ligne).Value = Range("K" & i).Value
Sheets("IMPRESSION").Range("L" & ligne).Value = Range("L" & i).Value
Sheets("IMPRESSION").Range("M" & ligne).Value = Range("M" & i).Value
Sheets("IMPRESSION").Range("N" & ligne).Value = Range("N" & i).Value
Sheets("IMPRESSION").Range("O" & ligne).Value = Range("O" & i).Value
Sheets("IMPRESSION").Range("P" & ligne).Value = Range("P" & i).Value
Sheets("IMPRESSION").Range("Q" & ligne).Value = Range("Q" & i).Value
Sheets("IMPRESSION").Range("R" & ligne).Value = Range("R" & i).Value
Sheets("IMPRESSION").Range("S" & ligne).Value = Range("S" & i).Value
Sheets("IMPRESSION").Range("T" & ligne).Value = Range("T" & i).Value
Sheets("IMPRESSION").Range("U" & ligne).Value = Range("U" & i).Value
Sheets("IMPRESSION").Range("V" & ligne).Value = Range("V" & i).Value
Sheets("IMPRESSION").Range("W" & ligne).Value = Range("W" & i).Value
Sheets("IMPRESSION").Range("X" & ligne).Value = Range("X" & i).Value
Sheets("IMPRESSION").Range("Y" & ligne).Value = Range("Y" & i).Value
Sheets("IMPRESSION").Range("Z" & ligne).Value = Range("Z" & i).Value
Sheets("IMPRESSION").Range("AA" & ligne).Value = Range("AA" & i).Value
Sheets("IMPRESSION").Range("AB" & ligne).Value = Range("AB" & i).Value
Sheets("IMPRESSION").Range("AC" & ligne).Value = Range("AC" & i).Value
Sheets("IMPRESSION").Range("AD" & ligne).Value = Range("AD" & i).Value
Sheets("IMPRESSION").Range("AE" & ligne).Value = Range("AE" & i).Value
Sheets("IMPRESSION").Range("AF" & ligne).Value = Range("AF" & i).Value
Sheets("IMPRESSION").Range("AG" & ligne).Value = Range("AG" & i).Value
Sheets("IMPRESSION").Range("AH" & ligne).Value = Range("AH" & i).Value
Sheets("IMPRESSION").Range("AI" & ligne).Value = Range("AI" & i).Value
Sheets("IMPRESSION").Range("AJ" & ligne).Value = Range("AJ" & i).Value
Sheets("IMPRESSION").Range("AK" & ligne).Value = Range("AK" & i).Value
Sheets("IMPRESSION").Range("AL" & ligne).Value = Range("AL" & i).Value
Sheets("IMPRESSION").Range("AM" & ligne).Value = Range("AM" & i).Value
Sheets("IMPRESSION").Range("AN" & ligne).Value = Range("AN" & i).Value
Sheets("IMPRESSION").Range("AO" & ligne).Value = Range("AO" & i).Value
Sheets("IMPRESSION").Range("AP" & ligne).Value = Range("AP" & i).Value

Je n'arrive d'ailleurs pas à copier le Userform.
Précise ta question, ma boule de cristal est en panne 😀 😀 😀

à+
Philippe
.
 
Re : Trier des lignes contenant des formules

Re
Je suis finalement arrivé à en fabriquer une.
Ce qui ne fonctionne pas encore comme il faut, mais qui est essentiel, c'est la copie des données. Je vais essayer d'y bricoler encore.
Merci pour ce code; je suis désolé que tu te sois donné autant de peine: je n'étais tout de même pas assez paresseux pour ne pas l'avoir fait moi-même!
Bonne après-midi

Aloha
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…