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

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

  1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
    1. Utilisateur anonyme
       
      Bonjour,

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

      Bonne journée!
      0
    2. Utilisateur anonyme
       
      Je suis présentement en train de faire des tests...
      0
      1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759 > Utilisateur anonyme
         
        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
      2. Utilisateur anonyme > via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention  
         
        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
    3. Utilisateur anonyme
       
      Merci :)
      0