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 une cellule dans la colonne à sa droite après 2 modifications [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut Copier une cellule dans la colonne à sa droite après 2 modifications
    Bonsoir,

    Dans la colonne A j'ai des données style "John Smith"

    J'aimerais écrire une macro qui pour chaque ligne de la colonne A copie en Bx le contenu de la cellule Ax en transformant les majuscules en minuscules, et les espaces en "_"

    Tout ce que j'ai réussi à faire pour le moment, c'est de modifier dans la colonne A les majuscules en minuscules [merci un autre sujet sur ce forum ]. Au pire si je rajoute une autre macro à la suite de celle que j'ai écrite qui transforme les espaces en "_" ca m'aide déjà bien! (meme si ca remplace dans la colonne A au lieux de réécrire dans la colonne B)

    Merci d'avance

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,

    à adapter à ton contexte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Macro1()
    Range("B2") = LCase(Replace(Range("A2"), " ", "_"))
    End Sub
    si tu as une grande liste en col A, commençant à la ligne 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro1()
    Dim origine(), but()
    Dim dl As Long, i As Long
    dl = Range("A" & Rows.Count).End(xlUp).Row
    ReDim origine(1 To dl + 1)
    ReDim but(1 To dl + 1)
    origine = Range("A2:A" & dl)
    For i = 1 To UBound(origine)
      but(i) = LCase(Replace(origine(i, 1), " ", "_"))
    Next i
    Range("B2:B" & UBound(origine) + 1) = WorksheetFunction.Transpose(but)
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    ca marche à la suite de mon autre macro, mais ca tourne que pour la ligne 2 (forcement )

    Je suppose que par "adapter au contexte" faut que je fasse la boucle mais j'y arrive pas.

    J ai essayé de greffer ton code sur ma première macro mais je suis vraiment une buse en code

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    As-tu lu le reste de ma réponse à laquelle j'ai ajouté un nouveau code ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    non, sinon j'aurais juste écrit:
    MERCI BEAUCOUP!

    J avais pas vu que t avais complété ta réponse, la boucle marche parfaitement, encore merci

    Demain j essaye de comprendre comment ca fonctionne

    bonne soirée/nuit

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Demain j essaye de comprendre comment ca fonctionne
    Au cas où beaucoup de données sont à travailler, je préfère passer par des variables "tableau" beaucoup plus rapides à l'exécution, donc celles-ci :
    la variable "origine" contient tes noms d'origine et la variable "but" est un tableau avec le résultat souhaité. il suffit, ensuite de mettre le contenu de la variable "but" en colonne B

    Bonne nuit

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    noté

    merci pour tout

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour le forum, havopti

    Après une petite nuit de sommeil, ci-dessous le code corrigé et ses explications. Bien sur, d'autres solutions existent sans passer par les tableaux, tu l'auras compris.
    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
    Sub Macro1()
    Dim origine(), but() 'variables contenant les tableaux
    Dim dl As Long, i As Long
     
    dl = Range("A" & Rows.Count).End(xlUp).Row 'indique la dernière ligne
     
    ReDim origine(1 To dl - 1) 'redimensionne le tableau en fonction de dl
    ReDim but(1 To dl - 1) 'redimensionne le tableau en fonction de dl
     
    origine = Range("A2:A" & dl) 'donne les valeurs de la col A au tableau "origine"
     
    For i = 1 To UBound(origine) 'boucle qui donne les valeurs recherchées à "but"
      but(i) = LCase(Replace(origine(i, 1), " ", "_")) 'Lcase pour minuscule, Replace pour remplacer les espaces(" ") par des tirets("_")
     
    Next i
     
    Range("B2:B" & dl) = WorksheetFunction.Transpose(but) 'résultat affecté à la colonne B en transposant le tableau "but"
    End Sub
    Bonne journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/07/2014, 21h35
  2. [XL-2003] copier une cellule dans plusieurs autres cellules
    Par Eric26 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/02/2011, 14h27
  3. Sélection d'une cellule dans uitable avec clic droit
    Par Pierrot92320 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 14/05/2009, 14h40
  4. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48
  5. Copier une cellule dans une autre cellule
    Par zis0907 dans le forum Excel
    Réponses: 1
    Dernier message: 24/04/2008, 18h24

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