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 :

Boucle sur colonne + replace [XL-97]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut Boucle sur colonne + replace
    Bonjour
    J'aimerai faire une petite macro en VBA :

    Boucler sur mes colonnes à partir de la colonne H et jusqu'à la DZ
    Pour chaque ligne de la colonne en cours si je trouve "X" je remplace cette valeur par la valeur de la cellule de la ligne 1

    J'ai réussi à le faire pour une colonne mais je ne sais pas commet faire pour traiter automatiquement toutes mse colonnes

    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
    Sub newone2()
     
    Dim uneColonne As Long
     
    Dim UneCellule As Range
     
    'Selectionne la colonne I
    ActiveSheet.Columns("I:I").Select
    Dim p As String
    'Pour chaque cellule de la colonne
    For Each UneCellule In Selection
        'récupération de la valeur
        p = UneCellule.Value
        'remplacement des x par Mon texte
        p = Replace(p, "'x'", "Mon texte")
     
        'remise de p dans la cellule
        UneCellule.Value = p
    Next
     
     
    End Sub
    Merci d'avance!

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    un exemple de boucle sur colonne 8 à 50

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim col as integer
    dim ligne as long
     
    For col = 8 to 50
    Cells(ligne,col) = "test"
    next col

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    bonjour essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each UneCellule In Range("Ta zone")
    Pour connaitre la valeur de Tazone
    regarde ce lien et essaye d'adapter en cas de souci montre nous ce que tu as fait
    http://www.developpez.net/forums/d45...gnees-feuille/

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Remplace
    ActiveSheet.Columns("I:I").Select
    'et
    For Each UneCellule In Selection
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For each UneCellule in activesheet.usedrange
    Ainsi tu parcourras toutes les cellules de ta plage de données.
    (Replace existait déjà sur VBA 97 ? C'est une question )

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 101
    Par défaut
    Ca yest j'ai réussi merci pour votre aide
    Voici la bonne macro :

    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
    Sub newone3()
     
    Dim col As Integer
    For col = 15 To 18
    entete = Cells(1, col).Value
     
    Dim UneCellule As Range
    ActiveSheet.Columns(col).Select
     
    Dim p As String
    'Pour chaque cellule de la colonne
    For Each UneCellule In Selection
        'récupération de la valeur
        p = UneCellule.Value
        'remplacement des x
        p = Replace(p, "x", entete)
     
        'remise de p dans la cellule
        UneCellule.Value = p
    Next
    Next col
    End Sub

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu n'as pas à parcourir les colonnes si tu parcours déjà les cellules. Limite le code à ce que je mets

    Dim une cellule as range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each UneCellule In ActiveSheet.UsedRange
        UneCellule = Replace(UneCellule.Value,"x", "test"
    Next
    Si x est une variable, déclare-là et supprime les guillemets.

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

Discussions similaires

  1. Boucle sur colonnes précis
    Par doctor_vai dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/04/2013, 18h47
  2. Boucle sur colonnes et sur lignes
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2012, 11h27
  3. Boucle sur colonne
    Par slimlus dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 16/09/2010, 11h57
  4. Boucle sur colonnes
    Par leaprovence dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/05/2008, 23h45
  5. [vba-E2003] problème boucle sur colonne
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2007, 19h57

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