Macro Excel copier cellules

Résolu/Fermé
droux Messages postés 3 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 20 novembre 2008 - 19 nov. 2008 à 17:32
droux Messages postés 3 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 20 novembre 2008 - 20 nov. 2008 à 10:25
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
A voir également:

5 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 nov. 2008 à 18:30
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+
0
droux Messages postés 3 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 20 novembre 2008
19 nov. 2008 à 19:12
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+
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 nov. 2008 à 20:01
Après mangé, je rectifie le code

A+
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
19 nov. 2008 à 21:10
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
droux Messages postés 3 Date d'inscription mercredi 19 novembre 2008 Statut Membre Dernière intervention 20 novembre 2008
20 nov. 2008 à 10:25
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!

++
0