[Macro] Supprimer des mots dans une sélection
Résolu/Fermé
Altays
Messages postés
9
Date d'inscription
mardi 30 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
-
Modifié par Altays le 30/08/2016 à 10:48
Altays Messages postés 9 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 9 septembre 2016 - 2 sept. 2016 à 10:40
Altays Messages postés 9 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 9 septembre 2016 - 2 sept. 2016 à 10:40
A voir également:
- [Macro] Supprimer des mots dans une sélection
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Supprimer mot de passe windows 10 - Guide
- Supprimer pub youtube - Accueil - Streaming
- Comment supprimer une application préinstallée sur android - Guide
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
30 août 2016 à 10:34
30 août 2016 à 10:34
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
31 août 2016 à 09:38
31 août 2016 à 09:38
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
Altays
Messages postés
9
Date d'inscription
mardi 30 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
Modifié par Altays le 31/08/2016 à 11:20
Modifié par Altays le 31/08/2016 à 11:20
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.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
>
Altays
Messages postés
9
Date d'inscription
mardi 30 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
31 août 2016 à 11:24
31 août 2016 à 11:24
Désolé, mais je me suis basé sur ton exemple; ton dernier envoi ne lui correspond pas...
quand je disais que tes "subtilités" m'inquiétait...
dans tous les forums d'entraide, il est vital de donner un reflet exact de la réalité en mettant de noms bidons si besoin de confidentialité...
quand je disais que tes "subtilités" m'inquiétait...
dans tous les forums d'entraide, il est vital de donner un reflet exact de la réalité en mettant de noms bidons si besoin de confidentialité...
Altays
Messages postés
9
Date d'inscription
mardi 30 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
1 sept. 2016 à 07:26
1 sept. 2016 à 07:26
Je m'excuse mille fois. C'est la première fois que j'utilise un forum d'aide et je pensais que mon exemple était suffisamment précis...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
1 sept. 2016 à 08:33
1 sept. 2016 à 08:33
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... ;-)
Altays
Messages postés
9
Date d'inscription
mardi 30 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
Modifié par Altays le 1/09/2016 à 10:19
Modifié par Altays le 1/09/2016 à 10:19
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?
Altays
Messages postés
9
Date d'inscription
mardi 30 août 2016
Statut
Membre
Dernière intervention
9 septembre 2016
Modifié par Altays le 2/09/2016 à 11:15
Modifié par Altays le 2/09/2016 à 11:15
Voila, avec une bonne dose d'huile de coude, j'ai réussi à faire ce que je désirais.
Bon un pro en macro me crucifierait sur place car c'est du vrai bricolage, mais ça fonctionne.
En tout cas, merci pour votre aide.
Bon un pro en macro me crucifierait sur place car c'est du vrai bricolage, mais ça fonctionne.
En tout cas, merci pour votre aide.
30 août 2016 à 10:47
J'espère que ça marche.
Modifié par albkan le 30/08/2016 à 18:57
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. 😊
31 août 2016 à 07:26
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.