Macro Excel copier cellules

[Résolu/Fermé]
Signaler
Messages postés
3
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2008
-
Messages postés
3
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2008
-
Bonjour à tous,


Je me permet de poster ce poste au sujet d'un problème que je rencontre sur une macro.
J'explique mon probleme : j'ai un fichier comme suit:

ballon




balle

Bille

Je cherche à copier dans les cellules vides la valeur qui se trouve au dessus.
Donc dans cet exemple il faudrait copier ballon jusqu'à balle, balle jusqu'à bille etc...
J'ai essayé de faire une macro en mode relatif mais ça ne marche pas.
Démarche : je me place sur ballon je copie puis je fais shift+ctrl+fleche bas puis shift plus fleche haut pour ne pas selectionner balle puis je colle...jusqu'ici ça marche...ça me colle ballon dans les 4 cellules vides jusqu' balle.
Le problème est que lorsque j'execute le macro, il me copie ballon que dans 4 cellules vides même si il y en a 7 de vides jusqu'à balle...la je seche!

Si quelqu'un à compris ce que je souhaitai faire et qu'il peut m'eclairer sur ce sujet, je lui en serai reconnaissant :)

Merci par avance

5 réponses

Messages postés
17539
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
20 septembre 2021
4 731
Salut,

En supposant que la colonne traitée est la colonne A le balayage commence en A1. Il est impératif qu’il n'y ai pas de cellule vide avant cette sélection.
Ensuite il faut arrêter le code, saisir le mot FIN sous le dernier mot à copier ou dans la dernière cellule que l'on souhaite arrêter la copie.

Il est possible d'écrire le code différemment, mais je pense qu’il te sera plus facile de l’interpréter.

Sub Balayage()
Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(-1, 0).Select
If ActiveCell = "FIN" Then
Exit Sub
Else
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Do While ActiveCell.Value = ""
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Loop
Application.CutCopyMode = False
End If
End Sub

A+
Messages postés
3
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2008

Wow merci beaucoup...

Juste quelques remarques.
Est-il normal de devoir appuyer à chaque fois pour copier une valeur differente?
Ex : par rapport à mon exemple, la macro ne copie que Ballon et je dois réappuyer pour qu'elle copie balle etc..ce qui en soit n'est pas très grave!

Par contre, je suppose que c'est normal que cette macro ne marche pas si je l'applique à la colonne B..mais c'est bien la le probleme, c'est que je dois repeter l'opération dans une dizaine de colonnes...
Peut-être tu aurais une solution à mon problème.

Encore merci

A+
Messages postés
17539
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
20 septembre 2021
4 731
Après mangé, je rectifie le code

A+
Messages postés
17539
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
20 septembre 2021
4 731
Voilà, Comme le code précédent, n’oublis pas de mettre à la fin de la colonne le mot FIN pour arrêter la macro.
Si tu veux l’adapter à la colonne B, modifies la première ligne
Range("A1").Select
Par
Range("B1").Select

La première cellule de démarrage A1 ou une autre ne doit pas être vide

Sub Balayage()
Range("A1").Select
Do While ActiveCell.Value <> "FIN"
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(-1, 0).Select
If ActiveCell = "FIN" Then
Exit Sub
Else
Selection.Copy
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Do While ActiveCell.Value = ""
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Loop
Application.CutCopyMode = False
End If
Loop
End Sub

A+
Messages postés
3
Date d'inscription
mercredi 19 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2008

C'est un truc de fou!!

Merci mille fois! Tu peux pas savoir le temps que tu m'as fait gagné!
Chapeau bas...

Encore merci!

++