Macro Excel -Copie de cellules de bas en haut

Résolu
Yannmrt -  
 vincent -
Bonjour,

J'ai un tableau qui resemble a ca :

-
-
-
- A
-
-
- B
-
-
-
-
-
- C
-
- D
Les "-" sont des cellules.
Je voudrait copier les celulles de bas en haut quand celle ci sont vide, mais des que dans une celulles il y as un quelque chose, il faut copier cette nouvelle cellule dans les cellules du haut vide etc...
Vue que cela est pour differente colonne je voudrait faire une selection est lancer une macro baser sur cette selection pour copier. La selection peut etre assaz grande 15000 a 20000 cellules.
Resultat (cellules en gras est la cellules d'origine)
- A
- A
- A
- A
- B
- B
- B
- C
- C
- C
- C
- C
- C
- D
- D

J'espere que je me suis bien exprime.

Merci
Yann
Configuration: Windows Vista / Internet Explorer 7.0

6 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Après la sélection d'une plage sur une colonne, tu peux utiliser la macro suivante :
    Public Sub col_bas_en_haut()
    Dim lig As Long
    With Selection
    For lig = .Rows.Count + .Row - 1 To 1 Step -1
        If IsEmpty(Cells(lig, .Column).Value) Then
            Cells(lig, .Column).Value = Cells(lig + 1, .Column).Value
        End If
    Next lig
    End With
    End Sub
    
    0
  2. Yannmrt
     
    Merci pour ta reponse.

    Ca marche assez bien, le seul souci c'est que la copie ne s'arrete pas un niveau de la selection en haut et meme tout en haut.

    Merci
    Yann
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    On va supposer que gb est dans les bras de morphée ;-)
    Modifie sa macro en remplaçant par :
    For lig = .Rows.Count + .Row - 1 To .Row Step -1

    si tu veux qu'elle s'arrete à la 1ère cellule sélectionnée et non à la ligne 1

    eric
    0
    1. Yannmrt
       
      Eriiic,

      Merci ca marche !
      Je ne voudrait pas abuser mais si je veut le faire le meme system de haut en bas ? (j'ai essayer de changer les - en + sans avoir de chance)

      Merci
      Yann
      0
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonsoir Yannmrt,

    de haut en bas ?
    Public Sub col_haut_en_bas()
    Dim lig As Long
    With Selection
    For lig =  .Row To .Rows.Count + .Row - 1
        If IsEmpty(Cells(lig, .Column).Value) Then
            Cells(lig, .Column).Value = Cells(lig - 1, .Column).Value
        End If
    Next lig
    End With
    End Sub
    


    Bonsoir Éric,

    Merci pour la judicieuse correction : j'avais bien besoin de Morphée !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Yannmrt
     
    Salut,

    Merci Eric et GB pour ces macro qui vont me faciliter pas mal de chose.

    A plus
    Yann
    0
  7. vincent
     
    Messieurs,

    Et pour que la macro s'exécute sur une plage plus grande qu'une seule colonne ?

    Merci d'avance!!
    0