Macro excel : etirer les cellules d'une selection jusqu'à cellule non vide

couz94 - 28 nov. 2012 à 13:38
 couz94 - 29 nov. 2012 à 23:09
Bonjour,

Je débute dans la programmation des macros sur Excel.

J'aimerais faire l'équivalent du double click sur la croix noir en bas à droite d'une cellule qui étire les formules

Ce sont des cellules variables donc pas d'adresse type "A1" et le nombre de valeurs est aussi variable donc pas de destination type "A2:A354"

Pour l'instant je copie colle ma selection jusqu'en bas, mais j'aimerais que cela se colle jusqu'à la derniere cellule non vide de la colonne précédente.

EXEMPLE:

Feuille Excel :
A B C
1 600 salut 1800 (=A1*3)
2 123
3 1144
4 255

=> Je veux sélectionner dans ma macro (en supposant que la case de base est B1) toute mes colones jusqu'à la fin vers la droite, et les étirer jusqu'à la derniere ligne (ici A4, mais peut être variable)


Voici ma formule VBA actuelle :

Sub Macro21()
'
' Macro21 Macro
'

'

Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
ActiveCell.Offset(0, -1).Select

End Sub


=> J'utilise donc un copier coller, voici mon résultat:
Feuille Excel :
A B C
1 600 salut 1800 (=A1*3)
2 123 salut 369
3 1144 salut 3432
4 255 salut 765
5 salut 0
6 salut 0
...

=> Je souhaite que cela s'arrète à la ligne 4 car en A5 il n'y a plus de valeur.

4 réponses

Utilisateur anonyme
28 nov. 2012 à 21:30
Bonsoir,

Ton problème se décompose en deux étapes.
La première et de déterminer la dernière cellule non vide.
La seconde, appliquer "l'étirage" des cellules jusqu'à la cellule trouvée dans la première étape.

Il est inutile d'essayer de faire la seconde étape si la première ne fonctionne pas.

_____________
Kenji
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 nov. 2012 à 01:04
Salut

Au clavier, tu te positionnes sur la première cellule et tu appuies sur :
Shift-Ctrl-Flèche (n'importe quelle direction)
Shift-Ctrl-End (fin)
Tout dépend ce que tu veux sélectionner.
Suffit de faire ça dans l'enregistreur de macro.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Jack,

Alors non car dans l'enregistreur il m'enregistre les cases (D4:D7 par exemple) alors que dans ma macro la selection peut varier de cases selon les formules précédentes...

Bref j'ai trouvé la solution !

je selectionne la ligne à recopier :

Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy

puis je recopie à la ligne du dessous TANT que la cellule en bas à gauche n'est pas vide:

While Not IsEmpty(Activecell.Offset(1,-1))
Activesheet.Paste
Wend

Je n'ai plus la macro sous les yeux, mais je crois que c'est cela

Merci de vos réponses :)
0
et j'ai oublié de rajouter que je descend à la ligne du dessous :
ActiveCell.Offset(1,0).Select
0
Rejoignez-nous