[Macro] Supprimer des mots dans une sélection
Résolu
Altays
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Altays Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Altays Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- [Macro] Supprimer des mots dans une sélection
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page dans word - Guide
- Comment supprimer une application préinstallée sur android - Guide
- Supprimer pub youtube - Accueil - Streaming
- Fichier impossible à supprimer - Guide
3 réponses
bonjour,
Pour faciliter notre travail merci de mettre un extrait de ton classeur
pour cela
Dans l’attente
Pour faciliter notre travail merci de mettre un extrait de ton classeur
pour cela
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse
Dans l’attente
Bonjour,
merci pour ton classeur qui m'a aidé les "subtilités" sans précisions m'inquiètent :-)
si tu le désires on pourrait vérifier une sélection valable de cellules
ci dessous code écrit rapidement valable jusqu'à 255 lignes à modifier
merci pour ton classeur qui m'a aidé les "subtilités" sans précisions m'inquiètent :-)
si tu le désires on pourrait vérifier une sélection valable de cellules
ci dessous code écrit rapidement valable jusqu'à 255 lignes à modifier
Option Explicit
'---------------------------------------------
Sub supprimer_mots()
Dim plage As Range, cptr As Byte, T_in, T_out
'choix de la plage à modifier
Set plage = Application.InputBox(prompt:="sélectionnez la plage à modifier", Type:=8)
'mémorisation des données dans la plage sélectionnée
T_in = plage
ReDim T_out(1 To UBound(T_in), 1 To 2)
'modification de la plage mémorisée
For cptr = 1 To UBound(T_in)
T_out(cptr, 1) = Split(T_in(cptr, 1))(2) & " " & Split(plage(cptr, 1))(3)
T_out(cptr, 2) = "sous-catégorie"
Next
'restitution
plage.Resize(UBound(T_in), 2) = T_out
Set plage = Nothing
End Sub
Merci, mais ça marche qu'à moitié. Dans quelques cas, le code fonctionne parfaitement bien, mais dans d'autres il me supprime des mots qu'il ne devrait pas (car pas présent dans la cellule supérieure) ou n'en supprime pas.
http://www.cjoint.com/c/FHFiEQ0oDqU
(J'ai oublié de mettre "sous-catégorie" dans la colonne Commentaires du second tableau pour les produits concernés. Et j'ai déjà la macro pour changer le fond.)
Voici un exemple concret de ma liste avec ce que je désire obtenir.
Les "subtilités" dont je parle, c'est par exemple le "Chewing-gum, toutes sortes sans sucre" juste après les autres chewing-gum, des produits différents mais avec un nom très proche. J'ai peur qu'avec une automatisation complète de la macro, elle ne fasse pas la distinction, c'est pour cette raison que je souhaite sélectionner manuellement la plage de données à modifier.
http://www.cjoint.com/c/FHFiEQ0oDqU
(J'ai oublié de mettre "sous-catégorie" dans la colonne Commentaires du second tableau pour les produits concernés. Et j'ai déjà la macro pour changer le fond.)
Voici un exemple concret de ma liste avec ce que je désire obtenir.
Les "subtilités" dont je parle, c'est par exemple le "Chewing-gum, toutes sortes sans sucre" juste après les autres chewing-gum, des produits différents mais avec un nom très proche. J'ai peur qu'avec une automatisation complète de la macro, elle ne fasse pas la distinction, c'est pour cette raison que je souhaite sélectionner manuellement la plage de données à modifier.
Bonjour,
OK, comme c'est nouveau pour toi...
lorsque tu réalises ce genre de tableau, il est indispensable de garder la structure de tes désignations
dans "Chewing-gum sans sucre" la séparation se fait par virgule
dans "Fruchtpastillen" , les lignes 13 et 14 n'ont pas de virgule...
Dans mon code ci dessous , Vba séparant les différents mots suivant les virgules, il note aucune séparation dans ces 2 lignes et ne fait rien (ou plante)
je sais, c'est pointilleux et casse-pied!
En espèrant que... ;-)
OK, comme c'est nouveau pour toi...
lorsque tu réalises ce genre de tableau, il est indispensable de garder la structure de tes désignations
dans "Chewing-gum sans sucre" la séparation se fait par virgule
dans "Fruchtpastillen" , les lignes 13 et 14 n'ont pas de virgule...
Dans mon code ci dessous , Vba séparant les différents mots suivant les virgules, il note aucune séparation dans ces 2 lignes et ne fait rien (ou plante)
je sais, c'est pointilleux et casse-pied!
Option Explicit
'---------------------------------------------
Sub selectionner_mots()
Dim plage As Range, cptr As Byte, T_in, T_out
'choix de la plage à modifier
Set plage = Application.InputBox(prompt:="Avec la souris, sélectionnez la plage à modifier", Type:=8)
'mémorisation des données dans la plage sélectionnée
T_in = plage
ReDim T_out(1 To UBound(T_in), 1 To 2)
'modification de la plage mémorisée
For cptr = 1 To UBound(T_in)
T_out(cptr, 1) = Split(T_in(cptr, 1), ",")(1)
T_out(cptr, 2) = "sous-catégorie"
Next
'restitution
plage.Resize(UBound(T_in), 2) = T_out
Set plage = Nothing
End Sub
En espèrant que... ;-)
Arf, je me suis réjouit trop vite. Elle fonctionnait sur les premières lignes que j'ai essayé, mais maintenant je rencontre des problèmes.
Si j'ai bien compris le code, la macro sépare les mots en fonction des virgules et non pas de la cellule référence. Ce n'est pas possible de lui faire effacer dans les cellules sélectionnées uniquement les termes présents dans la cellule du dessus?
Si j'ai bien compris le code, la macro sépare les mots en fonction des virgules et non pas de la cellule référence. Ce n'est pas possible de lui faire effacer dans les cellules sélectionnées uniquement les termes présents dans la cellule du dessus?
J'espère que ça marche.
Bonjour Altays,
J'ai fait ton exercice uniquement par rapport à ton 1er message ; je n'ai pas
téléchargé tes 2 fichiers car j'ai trouvé que ton énoncé initial est très clair.
Je te propose ce fichier Excel 2007 : c'est une solution qui fait ce que tu veux
sans avoir à faire de sélection préalable. Ouvre le fichier et fais juste Ctrl e.
Dis-moi ce que tu en penses, et si ça te convient ; mais si tu veux absolument
faire une sélection préalable, ma solution n'ira pas. Tu verras que ça parcourt
les lignes de la dernière ligne du tableau à la ligne n° 3 (ordre impératif !).
Si ton problème est réglé, merci d'aller en haut de page, juste sous le titre
de ton 1er message, pour cliquer sur « Marquer comme résolu ».
Cordialement. 😊
Je n'arrive pas à ouvrir le lien que tu as mis, je tombe sur un message d'erreur "Not found".
Pour la sélection manuelle, je pars du principe que c'est impératif, car il y a quelques "subtilités". Certaines lignes correspondent aux critères indiqués mais il ne faut pas que la macro les prennent en compte.