Macro spéciale pour concaténer

  • Initiateur de la discussion Initiateur de la discussion Jopak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jopak

Guest
Bonjour, j'espère que quelqu'un pourra m'aider car je suis novice et j'ai besoin d'une macro un peu spéciale. Je ne sais même pas si c'est possible.

Je vais essayer de bien expliquer.

J'ai un texte n°1 (qui est du code html) à insérer au début d'une cellule (pleine de texte) et un autre texte n°2 (autre code html) à insérer à la fin du contenu de la cellule.

J'ai comme ça des milliers de cellules avec du contenu différent à chaque fois et chaque cellule doit commencer par ce texte n°1 et finir par ce texte n°2.

Mais dans le document, il y a aussi des cellules qui n'ont pas besoin de ces textes car le code html est complet.

Voilà j'espère que j'ai bien expliqué et je croise les doigts pour qu'il y ait une solution car je nage en plein cauchemar. Merci...
 
Re : Macro spéciale pour concaténer

Bonsoir Jopak et bienvenue,

Attention on déconseille le plus souvent de croiser les doigts pendant la natation: tu risques les crampes ... ou les noeuds gordiens!
Plus sérieusement, le début des explications est assez clair, mais un petit bout de fichier exemple serait le bienvenu, lui aussi: il permettrait de comprendre ce que tu veux ajouter et où.
Précise aussi dans quel(s) cas le texte (balises?) doit -ou non- être inséré.

La meilleure chose à faire, dans un premier temps, serait de lire Lien supprimé et de t'inspirer des idées intéressantes (si, si! 😉) qui y figurent.

PS: si quelqu'un propose une formule, c'est envisageable ou il ne peut s'agir que de code vba?
 
Re : Macro spéciale pour concaténer

Bonsoir Jopak et bienvenue,

Attention on déconseille le plus souvent de croiser les doigts pendant la natation: tu risques les crampes ... ou les noeuds gordiens!
Plus sérieusement, le début des explications est assez clair, mais un petit bout de fichier exemple serait le bienvenu, lui aussi: il permettrait de comprendre ce que tu veux ajouter et où.
Précise aussi dans quel(s) cas le texte (balises?) doit -ou non- être inséré.

La meilleure chose à faire, dans un premier temps, serait de lire Lien supprimé et de t'inspirer des idées intéressantes (si, si! 😉) qui y figurent.

PS: si quelqu'un propose une formule, c'est envisageable ou il ne peut s'agir que de code vba?

Bonjour Modeste,

Merci de m'avoir répondu. Je regarderai mieux la charte ce soir. Ça m'ennuie de mettre une partie du fichier en ligne par rapport à mon client. Comment faire? En fait il y a des cellules qui commencent et se terminent sans les balises div font size etc. et d'autres qui commencent et se terminent avec ces balises. Les contenus pour lesquels il manque du code début/fin ne sont pas tous les mêmes mais certains commencent et terminent par les mêmes mots parfois. Je ne sais pas si c'est important à préciser. Mais il y a des tas de débuts et de fins différents.

Je pensais que seule une macro pouvait insérer mes balises mais si ça marche avec une formule, c'est bien aussi. Pour certaines cellules je peux sélectionner plusieurs cellules de suite, qui n'ont pas les balises. Pour d'autres, elles alternent avec les cellules qui ont les balises.

J'espère que ça donne des précisions pour éclairer. En résumé, c'est le bazar.
 
Re : Macro spéciale pour concaténer

Bonjour Jopak,

Ça m'ennuie de mettre une partie du fichier en ligne par rapport à mon client
... ça tombe bien, on n'en a pas besoin (voir point 3 d) de la charte! 🙂
Mais comme il semble que les cas de figure soient aussi divers que variés, le fichier sera vraiment précieux. Le contenu peut-être "fantaisiste": ce qui importe, c'est que les différentes situations y soient représentées.
 
Re : Macro spéciale pour concaténer

Bonsoir Modeste,

J'ai fait un fichier exemple pour donner un aperçu.

Les cellules en rouges sont le genre de cellules incomplètes. Incomplètes parce qu'elles doivent commencer avec ce qu'il y a dans la cellule en vert et finir avec ce qu'il y a dans la cellule en jaune. Les autres cellules sont complètes.

Il y a aussi les cellules bleues : elles ne commencent pas par le contenu vert et ne finissent pas par le contenu jaune mais elles n'ont pas besoin d'être corrigées.

Mais s'il y a une formule qui peut utiliser les cellules vert et jaune, le problème c'est que ces deux cellules devront disparaître du document quand j'aurai fini et ça risque d'affecter les modifications par formule (je crois)

L'idéal serait de corriger en une fois toutes les cellules qui ne commencent/finissent pas de la bonne façon (sans toucher aux bleues) mais un moyen de le faire cellule par cellule me ferait déjà gagner beaucoup de temps.

Voilà j'espère qu'il existe une solution malgré tout, as-tu de l'inspiration ?
 

Pièces jointes

Re : Macro spéciale pour concaténer

Bonsoir Jopak,

Avec mes connaissances du html, je ne suis pas certain de bien comprendre ce que tu attendais 😕
J'ai donc pris quelques libertés: chaque fois que la chaîne de caractères ne commence pas par '<', j'ajoute au début, le contenu de la cellule verte et le texte de la jaune à la fin. Dans les autres cas, je reprends le texte sans y changer quoi que ce soit.
Si tu me dis que les cellules en rouge ne conviennent pas (même si l'une d'elles commence bien par un '<') et que les bleues ne sont pas à modifier (même si elles ne commencent pas par le texte de la cellule verte) ... il faudrait que tu précises quels critères sont déterminants pour décider de la conformité (ou non)
Le résultat apparaît pour le moment en Feuil2 et à l'aide de formules (dans un premier temps). L'avantage est que tes cellules verte et jaune peuvent rester en Feuil1 (je les ai déplacées en colonne B pour ne pas qu'elle soient traitées par les formules.

Il faudrait vérifier si la présence de formules nuit à la suite du travail. C'est la raison pour laquelle je propose ce premier jet très incomplet encore. Si c'est le cas, on peut sélectionner la colonne A en Feuil2 la copier et faire un collage spécial "valeurs", pour récupérer le texte sans les formules (voir Feuil3).

Une fois certains qu'on a géré tous les cas de figures, on peut faire une macro, si c'est plus simple ou plus pertinent!
 

Pièces jointes

Re : Macro spéciale pour concaténer

Bonjour Modeste, quelle belle formule!
Déjà, cette formule qui, si j'ai bien compris, se charge d'ajouter le vert et le jaune quand la cellule ne commence pas par < m'aiderait beaucoup. Est-ce que ça peut être transformé en macro? Si c'est plus simple, une macro comme ça ce serait déjà fantastique.

Pour les critères d'ajout du code vert et du code jaune, en fait je pense que c'est :

1- chaque fois que la chaîne de caractères ne commence pas par <
2- chaque fois que ça commence par <li> ou <ul>

En fait je crois que c'est tout mais je peux me passer du critère 2 car il y a moins de cellules comme ça que les autres.

Et en fait pour faire simple, c'est correct quand ça commence par <div (pas <div> car il peut y avoir <div etc. et <div> qui sont des cellules correctes)

Les formules et toute modification du fichier je crois, posera problème pour ce qu'il est prévu d'en faire.

Merci d'avoir fait cette formule qui me fait entrevoir la lumière du bout du tunnel 🙂
 
Re : Macro spéciale pour concaténer

Bonjour,

Et en fait pour faire simple, c'est correct quand ça commence par <div (pas <div> car il peut y avoir <div etc. et <div> qui sont des cellules correctes)
... Euh, en clair, tu veux dire que dès que les 4 premiers caractères de la cellule sont "<div" (en majuscules ou minuscules), on ne change rien!?
Que devient alors le "<span..." de ta seconde cellule bleue, alors?

Un essai en pièce jointe par macro. Ouvrir le fichier, activer la Feuil1 et lancer la macro à l'aide du raccourci Ctrl+Shift+J (j'ai laissé ton "original" en dernière position); les cellules verte et jaune sont en feuille "Ajouts"

... à tester soigneusement (notamment pour détecter les cas particuliers!)
 

Pièces jointes

Re : Macro spéciale pour concaténer

Modeste merci pour cette macro, je l'ai lancée dans le fichier exemple et je trouve ça génial, j'ai donc essayé sur une copie de mon document et ça m'a affiché "erreur 9 l'indice n'appartient pas à la sélection" donc je me suis dit peut-être qu'il faut que la feuille Ajouts soit dans le document même donc je l'ai copiée mais ça ne fonctionne pas, rien ne se passe. Donc j'ai une super macro et je suis trop nulle pour savoir l'utiliser.

Ce fichier est énorme et très compliqué alors j'ai voulu simplifier, si le code se copie avec le span ce n'est pas trop grave.
Oui il y a des div et des DIV

Désolée de ne pas savoir appliquer la macro, je suis pire que novice.
 
Re : Macro spéciale pour concaténer

Good evening ma'am 😛

Sans voir le fichier réel, difficile de deviner ... cependant l'hypothèse de la feuille manquante figure en bonne place parmi les causes possibles de l'erreur. Je donc confirme que la feuille "Ajouts" doit être présente dans ton classeur "grandeur nature". Le nom doit être précisément celui-là, puisqu'il est renseigné comme tel dans le code. La feuille contenant les données doit, quant à elle, être en première position dans le classeur.

Voici le code à utiliser, si tu ne veux plus que les balises '<span ...' soient traitées! Compare ce code au précédent et tu devrais voir rapidement comment adapter si une autre exception te vient en tête.
N'hésite pas si tu as des questions.
VB:
Sub balisonsGaiement()
With Sheets(1)
    For Each c In .Range("A1:A" & .Range("A" & Rows.Count).End(xlUp).Row)
        If UCase(Left(c.Value, 4)) <> "<DIV" And UCase(Left(c.Value, 5)) <> "<SPAN" Then c.Value = Sheets("Ajouts").Range("A1") & c.Value & Sheets("Ajouts").Range("A2")
    Next c
End With
End Sub
 
Re : Macro spéciale pour concaténer

ça maaarche !!
En fait, il faut bien que tout soit au même endroit, la feuille "ajouts" et même la colonne concernée dans la feuille.
C'est miraculeux ces macros, pour moi ce sera beaucoup de temps de gagné, je t'envoie mille mercis du fond du coeur !!
J'en ai pour plusieurs mois de travail donc peut-être que je reviendrai si je suis encore coincée.
Merci Modeste, merci, merci, merci !!!
 
Re : Macro spéciale pour concaténer

Bonjour Jopak,

Ravi que ça fonctionne, mais prends le temps de bien tester, de repérer les cas particuliers qui ne vont sans doute pas manquer d'apparaître et d'adapter la macro (ou de revenir avec des questions)

Mais ... n'oublie pas une chose importante: ce que la macro modifie dans ton fichier ne peut pas être annulé (sauf en fermant le fichier, sans enregistrer!). Avant de te lancer à corps perdu avec ce bel enthousiasme 😉 ... pense donc à faire des copies de sauvegarde!

A un de ces jours,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
665
Réponses
6
Affichages
662
Retour