Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fonction concatener mise en forme (bis)

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

  • fonction concatener mise en forme.zip
    18.7 KB · Affichages: 86
  • fonction concatener mise en forme.zip
    18.7 KB · Affichages: 88
  • fonction concatener mise en forme.zip
    18.7 KB · Affichages: 90

soenda

XLDnaute Accro
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
 

vbacrumble

XLDnaute Accro
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
 

soenda

XLDnaute Accro
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
 

vbacrumble

XLDnaute Accro
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

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

A+
 

soenda

XLDnaute Accro
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
 

Excel-lent

XLDnaute Barbatruc
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:

Excel-lent

XLDnaute Barbatruc
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:

vbacrumble

XLDnaute Accro
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:

soenda

XLDnaute Accro
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
 

soenda

XLDnaute Accro
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

  • Fonction concatener REVISION 2.xls
    101 KB · Affichages: 56
Dernière édition:

Excel-lent

XLDnaute Barbatruc
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:

soenda

XLDnaute Accro
Re : Fonction concatener mise en forme (bis)

Re, Bonsoir à tous et à toutes

Envoyé par Excel-lent
Evidement, même si la macro y est pour beaucoup, le temps d'exécution dépend également de la puissance de ton PC
Et ta macro tourne en 1,54 de moyenne (sur mon PC).

Pour donner un ordre d'idées

A plus
 

Hulk

XLDnaute Barbatruc
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

  • fonction concatener mise en forme.zip
    21.1 KB · Affichages: 41
  • fonction concatener mise en forme.zip
    21.1 KB · Affichages: 37
  • fonction concatener mise en forme.zip
    21.1 KB · Affichages: 37

Excel-lent

XLDnaute Barbatruc
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:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…