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
- Liste déroulante excel - Guide
- Somme de plusieurs cellules excel - Guide
- Verrouiller cellules excel - Guide
- Copie cachée - 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