[Macro Excel] Modification massive

Résolu
Bonjour,
J'ai un document excel de 1 colonne / 300 lignes (contenant plusieurs centaines de profils comme la ligne ci-dessous) ou je dois réussir à passer de ce type de ligne:
CN=genseb2,OU=UOpromo10,OU=ETUDIANTS,DC=gtr,DC=iut-gtr,DC=univ-mrs,DC=fr,genseb2,genseb2,,genseb2,\\\\mustang\\profils-promo10\\genseb2


à celui-là:
"CN=genseb2,OU=UOpromo10,DC=domain,DC=local",genseb2,genseb2,,genseb2,\\\\mustang\\profils-promo10\\genseb2,user,544


En bidouillant, j'ai trouvé quelques solutions (via l'outil remplacer d'Excel)
Comme remplacer OU=UOpromo10,OU=ETUDIANTS par OU=UOpromo10 et ce pour d'autres trucs sur ma ligne

Mais le truc que j'arrive pas à faire c'est rajouter à la fin de chaque cellule du tableau: ,user,544
Et j'ai cru comprendre qu'il existait des Macros Excel pour me faciliter la vie, le problème c'est que je vois pas trop quoi rentrer dedans :o
Configuration: Windows 7 / Firefox 3.5.8

7 réponses

  1. Modérateur
    Bonjour,
    Pas besoin de macro pour cela. Supposons que tes "données" soient en colonne A, de A1 à A300, en B1 écris :
    =A1 & " ,user,544 "
    Formule que tu peux incrémenter vers le bas (placer la souris dans le coin inférieur droit de la cellule, cliquer lorsque l'on a le petit +, et, en maintenant le clic gauche enfoncé, "glisser" vers le bas.).
    Après tu peux copier/collage spécial "valeurs" ta colonne B en Colonne A et effacer ta colonne B...
    1. Et y'aurait pas moyen de mettre TOUT ca dans une macro?! :o

      Une macro qui permettrait donc de faire:
      - Remplacement de plusieurs partie du texte
      - Création d'une cellule B1 de type:
      =A1 & " ,user,544 " 

      - Duplication de la case B1 jusqu'en B300

      Mon but final est d'avoir le moins possible d'opération à effectuer, l'idéal est de n'avoir qu'à lancer une macro :]
      1. Modérateur
        Salut,
        Alors par macro pas besoin de passer par la colonne B :
        A placer dans un module :
        Sub ajout_user544()
        Dim i As Integer,
        For i = 1 to 300 'de la ligne 1 à 300 ça tu modifies comme tu veux
        Cells(i ,1).Value = Cells(i, 1).Value & " ,user,544 "
        Next i
        End Sub
        1. Merci!

          Tu entends quoi par module? :o
          Et tu saurais quelle est la syntaxe à adopter pour remplacer du texte?
          1. Modérateur
            Salut,
            Insérer un module : Dans la feuille concernée par la macro, taper ALT + F11, dans la fenêtre visual basic : Insérer/module. Dans la fenêtre qui apparaît alors copier/colle rle code et refermer. Pour utiliser la procédure : ALT + F8 sélectionner 'ajout_user544" et exécuter.
            Syntaxe pour remplacer un texte? Oui ok, mais remplacer quoi par quoi?
        2. Ah merci!

          Pour remplacer:
          OU=UOpromo10,OU=ETUDIANTS
          par
          OU=UOpromo10


          et

          CN=genseb2
          par
          "CN=genseb2
          1. Modérateur
            Tu peux utiliser la fonction Replace (ce que tu faisais avec Edition/remplacer) comme suit :

            ActiveCell.Replace What="OU=UOpromo10,OU=ETUDIANTS", Replacement:="OU=UOpromo10"

            par contre pour l'ajout d'une apostrophe, c'est plus délicat. Il faut procéder comme ceci :

            Dim apost As String
            apost = """"
            ActiveCell.Replace What:="CN=genseb2", Replacement:=apost & " CN=genseb2"
        3. En bidouillant un peu j'ai fini par faire ca :]

          Sub Modification()
          
              Dim i As Integer ' Déclaration de la variable i en tant que chiffre
              Dim Ajout As String ' Déclaration de la variable Ajout en tant que chaine de caractère
              Dim apost As String
              Ajout = ",objectClass,UserAccountControl" ' Définition de la variable Ajout
              apost = """"
          
              Range("A1").Select ' Sélection de la case A1
              ActiveCell.Value = ActiveCell.Value & Ajout ' Concaténation de ce qui est déjà présent dans la cellule avec la variable Ajout
                  
              For i = 2 To 713 ' Boucle sélectionnant la ligne 2 à la ligne 713
              Cells(i, 1).Value = Cells(i, 1).Value & ",user,544" ' Concaténation
              Cells(i, 1).Value = apost & Cells(i, 1).Value
              Cells(i, 1).Replace What:="OU=UOpromo10,OU=ETUDIANTS", Replacement:="OU=UOpromo10" ' Remplacement de texte
              Cells(i, 1).Replace What:="DC=gtr,DC=iut-gtr,DC=univ-mrs,DC=fr", Replacement:="DC=domain,DC=local" & apost
              Next i ' Fin de la boucle
              
          End Sub


          Tu peux me dire si mes commentaires sont correctes ou si tu vois des modifications à apporter? :o
          En tous cas merci, tout marche niquel et c'est vraiment puissant!
          1. Modérateur
            Salut,
            Tout semble bien. Mais que se passe t'il si dans une cellule la macro ne trouve pas ceci par exemple : :="DC=gtr,DC=iut-gtr,DC=univ-mrs,DC=fr", ??
        4. Aucune idée '_' dans l'utilisation que je vais en avoir, le problème ne devrait pas se poser
          Mais si tu y tiens je peux tester pour voir ce que ca donne