Fonction concatener mise en forme (bis)

  • Initiateur de la discussion Initiateur de la discussion lauren
  • 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 !

lauren

XLDnaute Nouveau
Rebonsoir!

Voici mon petit fichier!
Je pourrais ensuite faire un vulgaire copier-coller (ou collage spécial-valeur) de votre résultat de VBA?

En tout cas, merci vraiment merci mille fois de votre aide!

Lauren
 

Pièces jointes

Re : Fonction concatener mise en forme (bis)

Re, à tous

@Excel-lent
Vous noterez que j'ai remplacé :
Range("C" & Ligne).Clear
[C:C].Clear
Si tu veux, mais tu dois placer [C:C].Clear en dehors de la boucle (avant)

@vbacumble
J'essaie en vain depuis tout à l'heure de faire un truc du genre
...
C'est possible ou pas ?
Je ne crois pas, en effet les propriétés (Bold, Italic, etc), sont des propriétés de cellules...

Moi aussi, j'apprends beaucoup sur ce fil

A plus
 
Re : Fonction concatener mise en forme (bis)

Re


soenda: donc quelle solution privilégiée ?

Code:
Derligne = ActiveSheet.UsedRange.Rows.Count
ou
Derligne = Range("A1", Range("A65536").End(xlUp)).Rows.Count
ou
Derligne = Range("A1", [A65536].End(xlUp)).SpecialCells(2, 2).Rows.Count
 
Re : Fonction concatener mise en forme (bis)

Re, à tous

@vbacrumble
Ces 3 lignes de code répondent 3 problèmes différents

Ligne 1) dans certains cas on peut omettre "ActiveSheet"

Ligne 2) je préfère
Code:
Derligne = [A65536].End(xlUp).Rows
Ligne 3) je ne connaissait pas "SpecialCells", mais là aussi je préfère
Code:
Derligne = [A65536].End(xlUp).SpecialCells(Type, Valeur).Rows
Attention : démarrer à 65536 est conventionnel (2003/97), mais peut réserver quelques surprises...

A plus
 
Re : Fonction concatener mise en forme (bis)

Re

soenda
En fait je voudrais savoir qui de Pascal ou de toi détient la réponse

PascalXLD
Perso je préfère récuperer le nombre de ligne en début de macro
Car si je ne me trompe pas à mettre le [A65536].End(xlUp).Row dans la boucle tu recalcules à chaque tour la dernière ligne et cela n'est pas très optimisé

Soenda
J'ai testé tes optimisations et je suis assez surpris du résultat
Code:
Derligne = [A65536].End(xlUp).Row
For Ligne = 1 To Derligne
à la place de
Code:
For Ligne = 1 To [A65536].End(xlUp).Row

Quel le code à privilégier (pour la rapidité d'éxécution) ?

A+
 
Re : Fonction concatener mise en forme (bis)

Re, à tous

@vbacrumble
En fait je voudrais savoir qui de Pascal ou de toi détient la réponse
D'après les tests que j'ai effectué, et dont les résultats m'ont surpris même si la différence n'est vraiment pas grosse.

Je dirais "testes par toi-même et partages ton expérience"

En informatique le temps file très vite, aussi on a besoin de certitudes car on ne peut pas tout re-tester.

Mais les machines changent et les compilateurs aussi,
et nos belles habitudes de programmation...

A plus
 
Re : Fonction concatener mise en forme (bis)

Bonsoir Soenda,

soenda à dit:
Si tu veux, mais tu dois placer [C:C].Clear en dehors de la boucle (avant)

En effet, j'ai fais là une erreur de débutant! J'aurais dû relire ma macro posté à 16H48! Voir mieux, la rééssayer, j'aurais tout de suite vu mon erreur.

J'ai modifié le post de 16H48. Il est maintenant juste.

Bonsoir à tous
 
Dernière édition:
Re : Fonction concatener mise en forme (bis)

Bonsoir le fil, le forum,

Pour ceux qui passerait par ici, un peu de culture :

Vous voyez souvent dans le forum :

Code:
[A[COLOR="Red"][B]65536[/B][/COLOR]].End(xlUp).Rows
ou
Range("A[COLOR="Red"][B]65536[/B][/COLOR]").End(xlUp).Row
ou ...

Signifie : aller à la cellule A65536 (la dernière ligne), puis remonter jusqu'à la première cellule pleine.

Très utile pour connaître la dernière ligne d'un tableau.

Mais pourquoi 65536 me direz vous? Car Excel 2003 a 65536 lignes.

Histoire :
-> jusqu'à la version Excel 95 (7.0) => les feuilles sont constituées de 16.384 lignes (et 256 colonnes)
-> jusqu'à la version Excel 2003 (11.0) => les feuilles sont constituées de 65.536 lignes (et 256 colonnes)
-> dans la version Excel 2007 => les feuilles sont constituées de 1.048.576 lignes (et 16.384 colonnes)


Source

Bonne soirée à tous
 
Dernière édition:
Re : Fonction concatener mise en forme (bis)

Re



Temps d'exécution pour les 694 lignes du fichier de départ

(avec la macro :Sub Avec_le_With()
0,5859375 Sans Application
0,4140625 .ScreenUpdating = False
0,390625 .Calculation =xlCalculationManual
0,3828125 .EnableEvents = False

(avec la macro Sub ConcaténerEtMiseEnForme()
1,21875 Sans Application
0,890625 ScreenUpdating = False
0,8671875 Calculation =xlCalculationManual
0,8515625 EnableEvents

A+






A+
 
Dernière édition:
Re : Fonction concatener mise en forme (bis)

Re, à tous

@vbacrumble, et le test de
Code:
For Ligne = 1 To [A65536].End(xlUp).Row
ça donnes quoi chez toi ?

PS : je fais les tests 4 fois
(les 4 résultats donnent une vision plus juste...)

A plus
 
Re : Fonction concatener mise en forme (bis)

Bonsoir à tous et à toutes

@Excel-lent
le résultat retourné par ta macro est légèrement faux (pb au niveau de Len ?)
😱 Problème corrigé, et en prime une petite optimisation pour le fun (ça tourne en 0,44 de moyenne) 😛

Voir PJ

Merci et à plus 🙂
 

Pièces jointes

Dernière édition:
Re : Fonction concatener mise en forme (bis)

soenda à dit:
en prime une petite optimisation pour le fun (ça tourne en 0,44 de moyenne) 😛

Chapeau bas!

Bravo pour la performance!!!!!!


Pour illustrer mon message de cette après midi :
Excel-lent à dit:
Evidement, même si la macro y est pour beaucoup, le temps d'exécution dépend également de la puissance de ton PC

La macro de Soenda tourne sur mon PC en 0.55 de moyenne 🙁

Faut vraiment que je change de PC!!! Pourtant il était au TOP NIVEAU quand je l'ai acheté en l'an 1859 🙂

On a du faire peur à Lauren avec tout notre jargon, il a disparu!!!

A+ tout le monde

Edition : Vue ton post de 03h51, merci de tourner le couteau dans la plaie Soenda! Mais pour ma défense, ma macro figurant dans ta dernière pièce jointe n'est pas la dernière que j'ai donnée 😀

Par acquis de conscience, j'ai fais tourner ma macro figurant dans ton dernier post, pour comparer ton PC avec le mien, elle tourne en 1,42 de moyenne sur mon PC (-> plus précisément 1,4185549 - moyenne réalisé sur un échantillon de 5 tests)!

Tu es sûr que ton PC ne fait pas du parti pris? 😛
 
Dernière édition:
Re : Fonction concatener mise en forme (bis)

Hello Forum, Messieurs, Dames,

J'sais pas si elle est bien pro, mais une autre version.. sauf erreur, le résultat est le même.

Un mélange de vous tous avec ma petite touche (verte 😀), le problème, c'est que je comprends pas vraiment ce que je fais 😡 😀

Bon dimanche à tous, Hulk.
 

Pièces jointes

Re : Fonction concatener mise en forme (bis)

Bonjour Hulk,

Bienvenu dans le débat!

J'ai jeté un coup d'oeil à ta macro, elle est plus courte mais :
c.Offset(0, 2).Characters(Start:=1, Length:=X).Font.Bold = True
Signifie que dans la cellule : colonne C ligne ... tu mets en Gras la partie provenant de la colonne A, or sauf erreur, on ne sais pas si c'est le cas à chaque fois!

c.Offset(0, 2).Characters(Start:=X, Length:=Len(c.Offset(0, 2)) + 1 - X).Font.Italic = True
Signifie que dans la cellule : colonne C ligne ... tu mets en Italique (et gras semble t-il) la partie provenant de la colonne B, or sauf erreur, on ne sais pas si c'est le cas à chaque fois!

Une fois ta macro lancé, quelque soit la police de la colonne A et B, on obtient invariablement :
Bordeaux - La bouteille de 150cl

Mais je dis ça... comme je pourrais dire... 🙂

Donc sauf nouveau concurrent, le gagnant de ce fil est ... (roulement de tambour) ... Soenda! 🙂
 
Dernière édition:
- 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

Discussions similaires

Réponses
4
Affichages
135
Réponses
2
Affichages
106
Réponses
5
Affichages
473
Réponses
6
Affichages
160
Retour