Afficher une cellule si elle est plus grande que zéro

[Résolu/Fermé]
Signaler
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
-
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
-
Bonjour,

J'ai une plage (C16:I23). Dans cette plage, certaines cellules sont remplis.

J'aimerais que dans une autre feuille, les valeurs entrées dans ces cellules se retrouvent une en dessous de l'autre, sans mettre les cellules vides.

Donc, si les cellules D18, F21 et H22 sont plus grande de zéro, je veux que les valeurs entrées se retrouvent dans A1, A2 et A3 sur mon autre feuille.

À part faire un "Si" trop long, je ne vois pas comment faire :(

Des idées?

Merci! :)

1 réponse

Messages postés
13097
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
16 septembre 2021
2 247
Bonsoir

Avec une petite macro

Faire ALt+F11 pour ouvrir l'éditeur VBA puis onglet Insertion et Module, copier et coller la macro suivante dans page vierge puis fermer l'éditeur

Sub transfert()
For y = 3 To 9 'boucle sur colonnes 3 à 9
For x = 16 To 23 ' boucle sur lignes 16 à 23
If Sheets(1).Cells(x, y) > 0 Then ' si valeur de la cellule en x y de la 1ere feuille du classeurest sup à 0
lg = lg + 1' incremente la variable pour la ligne de 1
Sheets(2).Range("A" & lg) = Sheets(1).Cells(x, y) ' copie la valeur en ligne A lg de la 2eme feuille 
End If
Next x
Next y
End Sub


Pour lancer la macro : Onglet Developpeur puis Macro Selectionner la macro et Executer

Cdlmnt
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
24
Bonjour,

Merci beaucoup, je vais la tester cette semaine au travail et je vous reviens!

Bonne journée!
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
24
Je suis présentement en train de faire des tests...
Messages postés
13097
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
16 septembre 2021
2 247 >
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021

Re,

En début de macro tu déclare pour lg la valeur que tu veux comme ligne précédent la 1ere où commencer à copier, dans ton cas
lg=16 (à mettre avant le premier For)

Cdlmnt
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
24 >
Messages postés
13097
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
16 septembre 2021

Oui, j'y suis arrivé, c'est pour ça que j'ai changé mon commentaire en espérant qu'il ne soit pas vu :P Par contre, j'ai mis le 16 à un autre endroit :

Sheets(2).Range("A" & 16 + lg) = Sheets(1).Cells(x, y)
Messages postés
435
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
24 mars 2021
24
Merci :)