Macro Excel -Copie de cellules de bas en haut
Résolu
Yannmrt
-
vincent -
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
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
A voir également:
- Macro Excel -Copie de cellules de bas en haut
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel pour additionner plusieurs cellules - Guide
- Liste déroulante excel - Guide
- Copie cachée - Guide
- Verrouiller cellules excel - Guide
6 réponses
bonjour
Après la sélection d'une plage sur une colonne, tu peux utiliser la macro suivante :
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
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
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
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
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
bonsoir Yannmrt,
de haut en bas ?
Bonsoir Éric,
Merci pour la judicieuse correction : j'avais bien besoin de Morphée !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question