[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. 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
    1. 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", ??
    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. 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?
    4. 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. 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
          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...