Macro Excel copier cellules

Résolu
droux Messages postés 3 Statut Membre -  
droux Messages postés 3 Statut Membre -
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. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  2. droux Messages postés 3 Statut Membre
     
    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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Après mangé, je rectifie le code

    A+
    0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. droux Messages postés 3 Statut Membre
     
    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