Modification d'une macro excel: cellule de destination [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
samedi 15 décembre 2012
Statut
Membre
Dernière intervention
16 décembre 2012
-
Messages postés
24111
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
-
Bonjour,

J'ai hésité en choisissant le forum: je suis à la limite entre la bureautique et la programmation VBA :)
Voilà mon (petit) souci.
J'ai créé une macro qui me permet de travailler une chaîne de caractères récupérée sur le net. A savoir (en gros)
- remplacer les tirets longs par des virgules et enlever les caractères inutiles
- convertir le résultat en utilisant la virgule comme séparateur.

La macro fonctionne bien à ceci près que j'aimerais bien que le résultat de la conversion s'affiche sur la ligne où j'ai déposé ma chaîne de caractères. Malheureusement la macro m'affiche ça sur la ligne où je me trouvais quand je l'ai créée. Voilà la macro en question:


Sub mise_en_forme()
'
' mise_en_forme Macro
' Macro enregistrée le 15/12/2012 par QG
'
' Touche de raccourci du clavier: Ctrl+m
' Remplace les chaînes de caractères "pts -- " par des virgules, supprime
' les espaces et convertit la chaîne résultante en utilisant la virgule
' comme séparateur

Cells.Replace What:="pts -- ", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.TextToColumns Destination:=Range("B10"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
(20, 1), Array(21, 1), Array(22, 1)), TrailingMinusNumbers:=True
End Sub

Je suppose que le problème se situe au niveau du "Destination:=Range("B10") mais je ne sais pas par quoi remplacer ce Range pour arriver à afficher le résultat sur ligne de la cellule active.
Quelqu'un peut-il m'aider?

Merci d'avance.




2 réponses

Messages postés
24111
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
6 807
Bonjour,

si tu veux remplacer la cellule active :
Destination:=activecell
Si tu veux une colonne précise même ligne :
Destination:=cells(activecell.row, "B")

eric

PS:
et si tu mets :
Dim c as range
For each c in selection
' tout ton code...
next c
end sub

et que tu remplaces cells. par c. dans ton code, toute les cellules sélectionnées seront traitées (plutôt que de le faire une par une)

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
samedi 15 décembre 2012
Statut
Membre
Dernière intervention
16 décembre 2012

Cré vain diou, ça c'est de la réactivité! :D

Pour l'affichage ça marche. Grand merci.

Dans la réalité, je traite les lignes une par une mais je vais quand même modifier la macro pour les fois où j'accumulerai du retard ;-)

Je reviendrai après donner le résultat de ma saisie.
Messages postés
3
Date d'inscription
samedi 15 décembre 2012
Statut
Membre
Dernière intervention
16 décembre 2012

J'ai essayé en vain de modifier la macro comme tu me le conseilles.
Mais je suis têtu et en regardant de plus près j'ai réalisé que la fonction "Remplacer" agit sur toute la feuille (ou le classeur, au choix) et que la boucle n'était pas utile pour cette partie.
Restait la partie conversion avec la virgule comme séparateur. J'ai finalement eu l'idée de faire un essai en sélectionnant toutes les cellules contenant les chaînes de caractères à mettre en forme avant de lancer la macro initiale ( avec la modif sur la destination quand même) et ça fonctionne.
Il me reste à comprendre pourquoi ;-) Et ceci est une autre histoire...
Encore merci.
Messages postés
24111
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
6 807
Pourquoi ?
Et bien parce que le remplacement se fait sur la sélection si elle fait plus d'une cellule ;-)
Si tu fais comme ça plutôt que de boucler, tu cours le risque de remplacer toutes les cellules alors que tu ne veux en traiter qu'une.
Mais si toute la feuille est à traiter tout le temps pas de soucis.

eric