Macro Excel copier cellules

Résolu
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
Configuration: Windows XP
Firefox 3.0.4

5 réponses

  1. 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!

    ++
    1. 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+
      1. 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+
        1. 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+