[Macro Excel] Modification massive

Résolu
Seb -  
 Seb -
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
A voir également:

7 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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...
0
Seb
 
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 :]
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
0
Seb
 
Merci!

Tu entends quoi par module? :o
Et tu saurais quelle est la syntaxe à adopter pour remplacer du texte?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Seb
 
Ah merci!

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


et

CN=genseb2
par
"CN=genseb2
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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"
0
Seb
 
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!
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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", ??
0
Seb
 
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
0