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 pour remplacer les 2 premiers caractères d'une colonne [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Boucle pour remplacer les 2 premiers caractères d'une colonne
    Bonjour à tous,

    Je cherche comment remplacer les 2 premiers caractères de mon tableau mais je n'y arrive pas. J'ai cherché sur internet, ils m'ont donné quelque réponse mais aucune d'entres elles ne fonctionnent (ou je ne les ai pas compris).
    Je vous explique ce que je cherche à faire et ce que j'ai fais et vous m'aiderez à y voir plus claire je l'espère.
    Donc dans mon tableau excel dans la colonne A, j'ai plein de données ressemblant à 03XAS0021AZ- en sachant qu'ils commencent tous par 03 et qu'ils sont toujours suivi de 3 lettres.
    Je veux pouvoir remplacer 03 par 04 et donc j'ai fait une macro en utilisant une boucle for mais sa ne fonctionne pas.

    Voici ce que j'ai écrit:

    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
    Sub remplacement()
     
        Dim i As Integer
        Dim valeur As String
     
        i = 5
        valeur = Cells(i, 1)
        For i = 5 to 83
            'i commence à 5 car les valeurs de mon tableau commence a la ligne 5 et se termine à la ligne 83
             If Left(A & i, 2) = "03" Then
                valeur = Replace(Left(A & i, 2), "03", "04")
             End If
     
        Next
     
    End Sub
    L'erreur provient très certainement du Left(A & i, 2), le soucis c'est que je comprend pas vraiment la commande pour prendre les 2 premiers caractères et les remplacers

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour Romist,

    Tu peux tester ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        Dim rg As Range, t(), i&
            Set rg = Range(Cells(5, 1), Cells(83, 1))
            t = rg
            For i = 1 To UBound(t)
                t(i, 1) = "04" & Right(t(i, 1), Len(t(i, 1)) - 2)
            Next i
            rg = t
    fin:
        Set rg = Nothing
    End Sub
    Toute fois comme tu indiques que toutes tes données commencent par 03, pas besoin de tester si ça commence par 03.
    De plus il ne faut pas donner vide car sinon Len(t(i, 1)) - 2) va renvoyer une erreur.

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    En effet sa fonctionne, en revanche je comprends le code jusqu'à t=rg mais après je ne comprends rien vu que je ne connais pas grand chose en vba mais merci

  4. #4
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    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
    Option Explicit
     
    Sub test()
        Dim rg As Range
            'rg est une plage de données
        Dim t()
            't est un tableau destiné à contenir les valeurs de rg
        Dim i&
            'i est un Long Dim i& est la même chose que Dim i as Long
            Set rg = Range(Cells(5, 1), Cells(83, 1))
                'Cells(5, 1) est la cellule A5 et Cells(83, 1) est la cellule A83
            t = rg
                't est rempli avec les valeurs de rg
            For i = 1 To UBound(t)
                'parcours de tous les éléments du tableau
                    t(i, 1) = "04" & Right(t(i, 1), Len(t(i, 1)) - 2)
                        'concaténation de "04" avec la partie droite -2 caractères
            Next i
            rg = t
                't étant modifier, on met t dans le rg
    fin:
        Set rg = Nothing
            'libération de la variable rg
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour les détails

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/10/2009, 11h17
  2. Réponses: 2
    Dernier message: 19/06/2007, 17h37
  3. Réponses: 5
    Dernier message: 30/10/2006, 14h37
  4. Réponses: 2
    Dernier message: 14/06/2006, 10h30
  5. Réponses: 2
    Dernier message: 04/09/2004, 11h53

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