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

Résolu/Fermé
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 - 23 janv. 2015 à 17:58
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 - 26 janv. 2015 à 23:44
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

via55 Messages postés 13886 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 30 septembre 2022 2 490
23 janv. 2015 à 18:24
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
0
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
25 janv. 2015 à 20:41
Bonjour,

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

Bonne journée!
0
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
Modifié par RachelMartel le 26/01/2015 à 20:30
Je suis présentement en train de faire des tests...
0
via55 Messages postés 13886 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 30 septembre 2022 2 490 > RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021
26 janv. 2015 à 20:29
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
0
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25 > via55 Messages postés 13886 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 30 septembre 2022
26 janv. 2015 à 22:53
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)
0
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
26 janv. 2015 à 23:44
Merci :)
0