IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copier coller + déplacement par macro [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut Copier coller + déplacement par macro
    Bonjour le forum,
    J'ai un fichier avec des numéros de téléphones qui ont été saisis dans des cellules formatées en "Texte".
    Quand je re-formate les cellules pour avoir un affichage avec des chiffres groupés par 2, l'affichage reste identique. Pour avoir l'affichage correcte, il faut faire un copier, vider la cellule puis faire un coller.
    Comme j'ai plusieurs centaines de cellules à faire, j'ai essayé de faire cette opération par une macro enregistrée en automatique, mais cela ne fonctionne pas.
    Si un spécialiste de la macro pouvait me donner un coup de main je lui en serait très remerciant.

  2. #2
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Bonjour,

    J'ai éssayer ceci sous Excel 2003 et cela fonctionne, j'espère qu'il en sera de même de ton coté !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Update()
    Dim end_line
    Dim Temp As String
    Dim i As Long
    end_line = Range("A65536").End(xlUp).Row
     
    For i = 1 To end_line
    Temp = Cells(i, 1).Value
    Cells(i, 1).FormulaR1C1 = Temp
    Next
    End Sub
    Cordialement
    Darki03

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut
    Merci Darki03, ton code marche très bien même avec 2007 mais seulement sur la colonne A. Est-il possible de choisir une colonne différente?

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Oui bien sur ! J'ajoute quelques commentaires:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Update()
    Dim end_line
    Dim Temp As String
    Dim i As Long
    end_line = Range("A65536").End(xlUp).Row 'pour trouver la fin de la colonne A (on peut très bien en spécifier une autre par ex C ou AA)
     
    For i = 1 To end_line 'Parcours avec for jusque la dernière ligne
    Temp = Cells(i, x).Value '(i,x) x étant le numéro de colonne souhaitée
    Cells(i, x).FormulaR1C1 = Temp
    Next
    End Sub
    On peut aussi se passer de end_line et utiliser une boucle While (hypothèse les cellule son vide après le dernier numéro)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    i=1
    'On peut meme se permettre d'appliquer les action sur la colonne selectionée
    'avant le lancement de la macro:
    x=ActiveCell.Column
     
    While Cells(i,x).Value<>""
    Temp = Cells(i, x).Value '(i,x) x étant le numéro de colonne souhaitée
    Cells(i, x).FormulaR1C1 = Temp
    i=i+1
    Wend
    Et voila
    Cordialement.
    Darki03.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut
    Avec ton : "Et voilà" les choses semblent simples, sûrement pour toi, mais pas pour moi.
    Dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Update()
    Dim end_line
    Dim Temp As String
    Dim i As Long
    end_line = Range("A65536").End(xlUp).Row 'pour trouver la fin de la colonne A (on peut très bien en spécifier une autre par ex C ou AA)
     
    For i = 1 To end_line 'Parcours avec for jusque la dernière ligne
    Temp = Cells(i, x).Value '(i,x) x étant le numéro de colonne souhaitée
    Cells(i, x).FormulaR1C1 = Temp
    Next
    End Sub
    je présume que la colonne est désignée par la lettre A qui précède la valeur 65536. N'est-il pas possible d'appeler une boite de dialogue pour demander sur quelle colonne trier puis d'intégrer le nom de la colonne à la place du "A"?
    Sur 2007, le nombre de lignes étant bien supérieur à 65536, s'il était possible de demander également sur combien de lignes faire l'opération, ton code pourrait être utilisé par plus de gens.
    Il n'est pas possible d'arrêter la boucle à la première cellule vide car il y a souvent des trous.

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Citation Envoyé par marc56 Voir le message
    Avec ton : "Et voilà" les choses semblent simples, sûrement pour toi, mais pas pour moi.
    Milles excuses ! je pense que mon "et voila" a mal été interprété !

    Sous excel 2003 je suis encore limité à 65536 ! Mais bon il est vrai que j'ai commenté rapidement et de manière pas assez claire !

    Bon voila j'ai revu le tout avec des boites de dialogues (par contre il faut bien veiller a mettre des nombres et non du texte dans les boites de dialogue)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Sub Activate()
    'Declaration des variables
    Dim Temp As String 'Variable pour copier le contenu de la cellule temporairement
    Dim Colonne As Long 'Numéro de colonne
    Dim nb_rows As Long 'Nombre de lignes
    Dim i As Long 'Variable pour l'itération de la boucle For
     
    'Boite de dialogue demandant le numéro de la Colonne a traiter
    Colonne = InputBox("Entrer le numéro de colonne:", "Colonne")
    'Boite de dialogue demandant le nombre de ligne à traiter
    nb_rows = InputBox("Entrer le nombre de ligne à traiter:", "Lignes")
     
    If nb_rows = 0 Then 'Si nb_rows=0
    'On cherche la premiere cellule non vide en partant de la derniere
    'cellule de la colonne (excel 2007 = 1048576 si je ne me trompe pas)
    end_line = Range(Cells(1048576, Colonne), Cells(1048576, Colonne)).End(xlUp).Row
    'Le nombre de ligne devient alors la derniere ligne non vide (en partant du bas)
    nb_rows = end_line
    End If
     
    For i = 1 To nb_rows 'Pour i allant de 1 à nb_rows
    Temp = Cells(i, Colonne).Value 'On copie la valeur de la cellule dans Temp
    Cells(i, Colonne).FormulaR1C1 = Temp 'Cellule "=Temp"
    Next 'Next i
     
    End Sub
    J'ai rajouté un test nb_rows=0 si l'on veut laisser la macro trouver la dernière cellule (en partant de la dernière ligne)

    Je rajoute un petit "Et voila" ^^ ! Sinon sans rire j'épère que cela conviendras ce coup ci !

    Cordialement.
    Darki03.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Copier Coller dans une macro.
    Par namora dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/04/2015, 11h27
  2. [XL-2003] Copier/Coller intelligent par lien Hypertext
    Par christoff916 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2013, 09h42
  3. [XL-2007] Copier/Couper Coller invalidé par macro que je ne sais pas annuler
    Par krreymou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2011, 22h23
  4. recherche dans une base de donnees; copier coller via une macro
    Par yannlvr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2010, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo