Générer des courriers types word à partir d'excel

loulouange

XLDnaute Occasionnel
Bonsoir,

Je me permets de faire appel à vos compétences en Excel afin de savoir s'il est possible de créer dans un tableau excel comprenant une liste de personnes avec coordonnées, un bouton ou autre permettant d'ouvrir un document spécifique dans Word reprenant des éléments dans le tableau excel.

Etant donné que se sont des lettres personnalisées, il n'y pas de possibilité de faire un publipostage.

Jusqu'ici je n'ai pu qu'améliorer les lettres types en appliquant des champs, (je n'y connaissais rien avant).

Je sais qu'Excel propose de grandes possibilités mais je crains que ce que je demande nécessite une très bonne maîtrise d'Excel.

Ceci dit, si vous pensez que ma demande est réalisable, et s'il existe un tuto pas à pas ou si vous pouviez m'expliquer au moins pour un exemple, je pourrais tenter de comprendre le fonctionnement des macros.

Pour vous permettre de mieux cerner ma demande, je vous mets en pièce jointe un tableau et deux exemples de lettres types, une pour absence injustifiée (AI) et l'autre pour absence justifiée (AJ).

Le tableau est exhaustif, d'autres lettres types et documents existent, le but étant de pouvoir en cliquant sur un bouton (dans chaque colonne sur chaque ligne ??) de générer le document et de reprendre l'adresse du destinataire.

Je vous remercie par avance pour vos suggestions et conseils qui me seront bien précieux.
 

Pièces jointes

  • données sources.xls
    29.5 KB · Affichages: 247
  • Convov2 suite à AJ avec rdv ateliers.docx
    152 KB · Affichages: 230
  • Convov2 suite à AI avec rdv ateliers.docx
    154.9 KB · Affichages: 171
  • Convov2 suite à AJ avec rdv ateliers.docx
    152 KB · Affichages: 225
  • Convov2 suite à AI avec rdv ateliers.docx
    154.9 KB · Affichages: 179
  • Convov2 suite à AJ avec rdv ateliers.docx
    152 KB · Affichages: 225
  • Convov2 suite à AI avec rdv ateliers.docx
    154.9 KB · Affichages: 179

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial,

Juste pour te dire que j'ai revu le problème pour l'histoire de l'erreur#NA avec les mails, j'ai comparé les deux fois tout était pareil.

J'ai refait le test en remettant à neuf la formule qui se trouve dans la colonne "mail" de la feuille "BASE" (j'ai copier la première cellule et fait un copier coller vers la dernière cellule de la dernière ligne car il y avait le #NA sur certaines. Je l'avais déja fait la première fois mais le problème était toujours là. Et cette fois je ne sais pas pourquoi cela a résolue le problème :eek:

Bon ben j'espère que c'est bien réglé, désolée encore pour toutes mes questions, excel est parfois très capricieux ou je suis pas douée.

Bon et bien reste à trouver la solution pour mes formulaires, je continue mes recherches....

A te relire.

Loulou
 

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonjour Loulou,

Problème de signet : fais un essai en mettant en début de macro On Error Resume Next cette ligne signifie que s'il y a une erreur on la traite après, ou pas :eek:. Il faut faire attention lorsque l'on utilise cette ligne, car ça peut partir dans tous les sens. Car quelque soit l'erreur elle ne sera pas gérée mais dans ton cas ça doit le faire ;).

Problème d'adresse Mail : Avec le code que je t'ai indiqué au post #191, il n'y a pas besoin de formule dans la feuille BASE.
Dans la première feuille, lorsque tu sélectionnes un RU l'adresse mail est complétée dans la colonne de droite et est mise à jour dans l'onglet BASE, donc il faut juste mettre les lignes de code que je t'ai mentionné au post #191 et c'est tout.

A te relire

Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

merci Martial pour ton retour rapide !

Ca y est j'ai compris ma grosse boulette !! :( Je m'étais bien embrouillée les pinçeaux au sujet du code pour les mails :
au départ j'avais bien compris que la formule n'était plus utile dans la feuille "Base" donc je l'avais supprimée, et j'avais ensuite rentré mes noms RU dans la feuille1 et comme je voyais le résultat instantanément je me suis dit super ça marche alors j'avais tout saisi d'un coup et quand j'ai rafraîchit la feuille plus rien ; alors du coup j'ai remis les formules dans base, bref je vais pas t’embêter avec tous les détails.

Mais j'ai enfin compris, je n'avais pas fait attention tout à l'heure en comparant les codes des fichiers et je me suis rendue compte que j'avais une différence :

Comme au début j'obtenais le résultat des mails graçe à la formule qui se trouvait dans BASE, j'avais modifié le code ainsi justement pour éviter que la formule ne soit écrasée pas la valeur rentrée dans la feuille1 (FO Reçues) :
Code:
 Sheets("Base").Cells(j, 2).Resize(, 12).Value = Cells(i, 2).Resize(, 12).Value
    Sheets("Base").Cells(j, 15).Resize(, 15).Value = Cells(i, 15).Resize(, 15).Value

Donc là je viens de le remettre comme c'était au départ et bien sur ça fonctionne !
Code:
Sheets("Base").Cells(j, 2).Resize(, 28).Value = Cells(i, 2).Resize(, 28).Value

Ceci explique cela, grrrr vraiment navrée de t'avoir fait perdre ton temps, j'ai honte :eek:

Pour l'histoire des formulaires ,je viens de tester et ça à l'air de fonctionner !! je n'ai pas eu de problème, je vais donc tout reprendre avec cette ligne, en espérant que tout sera enfin réglé.


Puis-je me permettre te demander un dernier conseil, je pense que mon fichier est enfin au point. A présent ce que je souhaiterais c'est de pouvoir faire une sauvegarde de mon classeur sans les macros ni codes etc... ceci au cas où cela planterait et puis pour rassurer mes collègues aussi ;).

J'ai trouvé ce code, je voulais être sure que cela était correct, je ne voudrais pas mettre la pagaille dans mon fichier actuel.

Apparemment il faut le mettre dans un module, donc je devrais passer par un bouton je suppose ?

Code:
Sub SupprimeToutVBA()
Dim VbComp As Object
ThisWorkbook.SaveAs "C:\copie Suivi Ateliers.xls"
For Each VbComp In ActiveWorkbook.VBProject.VBComponents ' 'suppression vba
Select Case VbComp.Type
Case 1 To 3
ActiveWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
 
ActiveWorkbook.Save ' enregistre les suppressions
 
End Sub

Le fichier sans macro reportera bien les valeurs ? j'espère que je n'aurais pas de cellule avec des erreurs car les formules n'y sont plus ?

Encore un grand merci à toi, et pour ta patience !!!

A te relire.

Loulou
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Salut Loulou,

Ceci explique cela, grrrr vraiment navrée de t'avoir fait perdre ton temps, j'ai honte :eek:

Il ne faut surtout pas avoir honte, c'est en pratiquant que l'on arrive à progresser, ne t'inquiètes pas tout le monde est passé par des périodes d'erreur, de doute etc...

Puis-je me permettre te demander un dernier conseil, je pense que mon fichier est enfin au point.

Je pense que non, ton fichier n'est pas au point, car avec ce que tu as appris, tu vas le faire évoluer. Pour mes fichiers, souvent je les reprends, je me dis il faut rajouter ça ou ceci, les fichiers évoluent avec nos envies, nos besoins, l'important est que tu comprennes ton fichier de façon à le faire évoluer que tu le souhaites.

Apparemment il faut le mettre dans un module, donc je devrais passer par un bouton je suppose ?

Code:
Sub SupprimeToutVBA()
Dim VbComp As Object
ThisWorkbook.SaveAs "C:\copie Suivi Ateliers.xls"
For Each VbComp In ActiveWorkbook.VBProject.VBComponents ' 'suppression vba
Select Case VbComp.Type
Case 1 To 3
ActiveWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
 
ActiveWorkbook.Save ' enregistre les suppressions
 
End Sub

Pourquoi ne pas l'enregistrer tout simplement au format .xlsx et non .xlsm, cela enregistre ton fichier sans les données VBA.

Le fichier sans macro reportera bien les valeurs ? j'espère que je n'aurais pas de cellule avec des erreurs car les formules n'y sont plus ?

En l'enregistrant au format .xlsx cela reprendra toutes tes valeurs sans la partie VBA.

Bonne journée

Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial, le forum,

Je trouve ce forum vraiment super, ça fait plaisir de tomber sur des personnes qui donnent de leur temps et avec qui on peut échanger et apprendre énormément.

Pour en revenir à mon fichier, quand je repense à ce qu'il était au départ et maintenant quelle transformation. Je sais qu'il sera amené à évoluer selon les besoins, j'ai appris beaucoup de choses que je pense pouvoir reproduire à présent. Je voulais dire qu'il paraissait au point par rapport aux bugs que je rencontrais, je pense qu'à présent il est fonctionnel.


En l'enregistrant au format .xlsx cela reprendra toutes tes valeurs sans la partie VBA.
Pourquoi faire compliquer quand on peut faire simple :D ah ben ta méthode de sauvegarde au format xlsx marche bien aussi je l'adopte ! +1

Mais alors quel est l'intérêt de cette macro ? c'est pour l'automatiser ?


J'ai encore une petite question :eek:, je vais utiliser mon fichier aussi comme base de données, donc lorsque j'ai voulu préparer la lettre type pour le publipostage j'ai eu des soucis pour que word reconnaisse les titres, c'est parce que dans mon fichier excel ils sont situés sur la deuxième ligne.

Donc les titres qui m'intéressent sont dans la feuille1 "fo reçus" : civilité, nom, prénom, adresse1..., j'ai tout remis sur la première ligne et pour une meilleure visibilité j'ai fusionné chaque cellule sur deux lignes par exemple le titre NOM "D1: D2".

A un moment dans l'un de tes posts (pas réusssi à le retrouver ils sont trop nombreux) tu m'avais conseillée de ne pas supprimer de ligne ou de faire de fusion, donc je voulais juste savoir si ça ne posait pas de problème ?

A te relire.

Loulou
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonjour Loulou,

Quand les demandeurs sont aussi agréables que toi, cela ne pose pas de problème aux répondants d'aider ;)

Le code pour l'enregistrement sans vba a été créé, je pense, pour des fichiers .xls qui peuvent être avec ou sans macro.
Si quelqu'un souhaite enregistrer un fichier .xls contenant des macros avec seulement les données, cette macro est intéressante.

Pour les fusions de cellules, j'ai remarqué que cela posait des problèmes avec certains codes. Si d'après tes tests, il n'y a pas de problèmes tu peux les laisser.

A+

Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonsoir Martial, le forum,

Quand les demandeurs sont aussi agréables que toi, cela ne pose pas de problème aux répondants d'aider
Ah ben ça c'est gentil, je te retourne le compliment :)

Je m'y perds un peu avec tous ces formats, j'ai essayé en sauvegardant au format .xls, je n'ai pas vu de différence, j'ai en effet toujours les macros mais à l'activation des feuilles elles se rafraichissent toujours, c'est lié au vba non ? à moins que ça soit avec la macro, j'avoue ne pas trop faire la distinction, car les macros sont programmées avec des codes vba ?

Sinon et bien je vais encore t'embêter, mais voila mon nouveau problème : tu m'avais réalisé ce code pour automatiser une formule dans la feuille1 :
Code:
 [AD3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5=RC5)*(R3C28:RC28=""X""))>1,""1"",""""))"
  [AD3].AutoFill Destination:=[AD3:AE3], Type:=xlFillDefault
  [AD3:AE3].AutoFill Destination:=Range("AD3:AE" & [A65536].End(3).Row), Type:=xlFillDefault
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
End With
Application.DisplayAlerts = -1: Application.EnableEvents = -1
End Sub

je viens de m'apercevoir que le calcul dans la colonne AE ne fonctionnait pas.

Cellule AD :
Code:
=SI(AB3="";"";SI(SOMMEPROD(($D$3:$D3=$D3)*($E$3:$E3=$E3)*($AB$3:$AB3="X"))>1;"1";""))

Cellule AE (celle qui ne fonctionne pas) :
Code:
=SI(AC3="";"";SI(SOMMEPROD(($D$3:$D3=$D3)*($E$3:$E3=$E3)*($AB$3:$AB3="X"))>1;"1";""))

Je pense que c'est parce qu'il faut mettre ($AC$3:$AC3="X") à la place de "($AB$3:$AB3="X"))>"

mais je ne sais pas trop comment le modifier dans le code vba.

Voila pour mon soucis du jour.

A te relire.

Loulou
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonsoir Loulou,

Pour les formats Excel, jusqu'à la version 2003, Excel n'avait qu'une extension xls, dans ces fichiers, il était (est) possible d'enregistrer des fichiers avec ou sans macro.
A partir de la version 2007, Microsoft a créé 2 extensions possible xlsx et xlsm, xlsx pour les fichiers sans macro et xlsm pour les fichiers contenant des macros et UserForm.
Donc si tu enregistres un fichier xlsx en xls, le fichier ne comportera pas de macro. Au contraire, si tu enregistres un fichier xlsm en xls celui-ci gardera les macros existantes dans le fichier xlsm.
C'est pour cette raison que lorsque tu m'as demandé pour enregistrer ton fichier xlsm (avec macro) sans garder les macros, je t'ai proposé d'enregistrer en xlsx (sans macro).

Pour la formule, le système R1C1, R correspond à la ligne (Row) et C correspond à la colonne (Column).
Ta formule pour la colonne AE doit être :
[AE3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5=RC5)*(R3C29:RC29=""X""))>1,""1"",""""))"
Je n'ai pas testé, car pas ton fichier sous la main, mais ça devrait le faire.

A+

Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial, le forum,

Merci pour tes explications, j'étais curieuse de savoir la différence, mais le format .xlsx est parfait !

J'ai réussi à rentrer ton code, j'ai eu des messages d'erreur au début mais ça semble fonctionner, je te le met ci-dessous pour vérifier si j'ai bien fait :

Code:
[AD3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5=RC5)*(R3C28:RC28=""X""))>1,""1"",""""))"
[AD3].AutoFill Destination:=[AD3:AD300], Type:=xlFillDefault
  [AD3].AutoFill Destination:=Range("AD3:AD" & [A65536].End(3).Row), Type:=xlFillDefault
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
[AE3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5= RC5)*(R3C29:RC29=""X""))>1,""1"",""""))"
[AE3].AutoFill Destination:=[AE3:AE300], Type:=xlFillDefault
[AE3].AutoFill Destination:=Range("AE3:AE" & [A65536].End(3).Row), Type:=xlFillDefault
End With
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
End With
Application.DisplayAlerts = -1: Application.EnableEvents = -1
End Sub

au début j'avais noté sur cette ligne :
Code:
[AD3].AutoFill Destination:=[AD3:AD], Type:=xlFillDefault
mais j'avais un message j'ai donc rajouté '300' ce qui donne :
Code:
[AD3].AutoFill Destination:=[AD3:AD300], Type:=xlFillDefault


J'aimerais revenir sur un problème, j'en avait parlé il y a un moment de ça dans un des précédents posts, mais je ne sais pas si tu avais compris ma demande ou bien si c'était parce qu'il n'y avait pas de solution.

En fait, je voulais savoir pourquoi on ne peux plus annuler la dernière modification, soit avec CTRL+Z soit avec le menu en haut la fleche vers la gauche. Même si je n'ai pas rafraichi la feuille je ne peux pas le faire, c'est embétant j'ai eu ce problème ce matin encore, sur la feuille1 par exemple j'ai mis à jour des données, j'ai noté les dates de naissances et à un moment je me suis trompée de ligne donc j'ai effacé la date de quelqu'un d'autre et je ne sais plus ce que c'était. c'est un exemple mais je ne suis pas la seule à utiliser ce tableau et c'est une fonction qui manque.

Encore merci pour ta précieuse aide.

A te relire.

Loulou
 

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonsoir Loulou,

Merci pour tes explications, j'étais curieuse de savoir la différence, mais le format .xlsx est parfait !
Les différences entre les fixhiers xls et xlsx ou xlsm ne s'arrêtent pas là, il y a aussi un nombre de cellule plus important par onglet aussi bien en nb de ligne que de colonne, le poids des fichiers, pour le même fichier, celui enregistré en xls sera plus important (en poids) que le même fichier en xlsx ou xlsm, j'en oublie bien d'autre.

Code:
[AD3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5=RC5)*(R3C28:RC28=""X""))>1,""1"",""""))"
[AD3].AutoFill Destination:=[AD3:AD300], Type:=xlFillDefault
  [AD3].AutoFill Destination:=Range("AD3:AD" & [A65536].End(3).Row), Type:=xlFillDefault
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
[AE3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5= RC5)*(R3C29:RC29=""X""))>1,""1"",""""))"
[AE3].AutoFill Destination:=[AE3:AE300], Type:=xlFillDefault
[AE3].AutoFill Destination:=Range("AE3:AE" & [A65536].End(3).Row), Type:=xlFillDefault
End With
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
End With
Application.DisplayAlerts = -1: Application.EnableEvents = -1
End Sub

Peut-être peux-tu supprimer le premier bloc contenant
Code:
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
tu peux aussi remplacer 2 lignes par une seule
Code:
[AD3:AE3].AutoFill Destination:=Range("AD3:AE" & [A65536].End(3).Row), Type:=xlFillDefault
A tester, je ne l'ai testé, en gros, cela devrait donner ça :
Code:
[AD3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5=RC5)*(R3C28:RC28=""X""))>1,""1"",""""))"
[AE3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5= RC5)*(R3C29:RC29=""X""))>1,""1"",""""))"
[AD3:AE3].AutoFill Destination:=Range("AD3:AE" & [A65536].End(3).Row), Type:=xlFillDefault
With Application
  .DisplayAlerts = -1
  .EnableEvents = -1
  .Calculate
End With
End Sub
Pour résumé, les 2 premières lignes pour copier tes formules en AD3 et AE3, la ligne suivante pour étendre les formules dans les cellules du dessous (les 2 colonnes en même temps, tu gagnes du temps), remise en fonction de DisplayAlerts et EnableEvents puis Calcul.

J'aimerais revenir sur un problème, j'en avait parlé il y a un moment de ça dans un des précédents posts, mais je ne sais pas si tu avais compris ma demande ou bien si c'était parce qu'il n'y avait pas de solution.

En fait, je voulais savoir pourquoi on ne peux plus annuler la dernière modification, soit avec CTRL+Z soit avec le menu en haut la fleche vers la gauche. Même si je n'ai pas rafraichi la feuille je ne peux pas le faire, c'est embétant j'ai eu ce problème ce matin encore, sur la feuille1 par exemple j'ai mis à jour des données, j'ai noté les dates de naissances et à un moment je me suis trompée de ligne donc j'ai effacé la date de quelqu'un d'autre et je ne sais plus ce que c'était. c'est un exemple mais je ne suis pas la seule à utiliser ce tableau et c'est une fonction qui manque.
A ma connaissance, ce n'est pas faisable, car les manipulations faites par macro ne sont pas enregistrées. Dans ton fichier, il y a beaucoup de macros événementielles (qui se lancent suivant une action, Change(), Activate() etc...). Les macros se lancent dès que tu saisies une donnée dans une feuille, donc tu n'as plus accès au "retour en arrière" (Ctrl+Z).

A te relire

Martial
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial, le forum,

J'ai comparé mon fichier .xlsm et ensuite celui .xlsx je pensais voir une grande différence en poids mais le premier fait 4,73 mo et 4,64 mo pour le deuxième !! Mais là où je suis surprise c'est la différence entre la fois où tu avais repris le fichier pour l'alléger tu avais réussi à le réduire en poids à 1,33 mo !!

Donc du coup je l'ai repris et fait une mise à jour avec mes données actuelles, en remettant les codes à jour etc... et là je retombe à

1,47 mo pour le format Xlsm et 1,38 mo pour le format xlsx c'est déja beaucoup mieux :eek:

Je ne sais pas comment j'ai fait mon compte mais il va falloir que je fasse attention.

tester, je ne l'ai testé, en gros, cela devrait donner ça :
Code :
[AD3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5=RC5)*(R3C28:RC28=""X""))>1,""1"",""""))"
[AE3].FormulaR1C1 = "=IF(RC[-2]="""","""",IF(SUMPRODUCT((R3C4:RC4=RC4)*(R3C5:RC5= RC5)*(R3C29:RC29=""X""))>1,""1"",""""))"
[AD3:AE3].AutoFill Destination:=Range("AD3:AE" & [A65536].End(3).Row), Type:=xlFillDefault
With Application
.DisplayAlerts = -1
.EnableEvents = -1
.Calculate
End With
End Sub

Ca fonctionne !! donc la ligne suivante n'est pas indispensable ?

Code:
Application.DisplayAlerts = -1: Application.EnableEvents = -1

A ma connaissance, ce n'est pas faisable, car les manipulations faites par macro ne sont pas enregistrées. Dans ton fichier, il y a beaucoup de macros événementielles (qui se lancent suivant une action, Change(), Activate() etc...). Les macros se lancent dès que tu saisies une donnée dans une feuille, donc tu n'as plus accès au "retour en arrière" (Ctrl+Z).

Dommage, ça aurait été trop beau, mais on peut pas tout avoir n'est ce pas ! ;)
Toute fois j'ai vu ce code sur un post, n'est il pas possible au moins d'annuler la dernière action ?

Code:
Sub Annuler()
Application.Undo
End Sub

Merci d'avance pour ton aide;

A te relire.

Loulou
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

coucou c'est encore moi !

je me demandais pour la question du poids du fichier si cela ne venait pas des mises en forme conditionnelles ? en fait je ne sais pas comment c'est arrivé mais pour chaque feuille je me retrouve avec une centaines de règles ?? donc j'ai commencé à éliminer celles d'une des feuilles et cela a été très long car j'ai du le faire une à une ... je voulais savoir si on pouvait les sélectionner par nombre et les supprimer ensuite ?
 

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonjour Loulou,

Application.DisplayAlerts = -1: Application.EnableEvents = -1
tu peux supprimer cette ligne.
Pour le poids, je penche plutôt pour des cellules non supprimées.

As-tu testé la macro avec undo ? Est-ce que ça fonctionne ?

Pour les mises en formes conditionnelles, ça doit bien pesé un peu, mais de là à rajouter 3 Mo, ça ma parait beaucoup.

A+
 

loulouange

XLDnaute Occasionnel
Re : Générer des courriers types word à partir d'excel

Bonjour Martial, le forum,

J'en conclue donc qu'il n'y pas d'autres solutions que de supprimer les MFC une à une, dommage, c'est long mais bon j'arrive bientôt au bout...

et en effet, j'ai regardé pour l'instant pas grande différence de poids avant/après.

J' ai tout vérifié, il y avait encore pas mal de lignes et colonnes vides, je ne sais pas comme j'ai fait??, enfin je suis arrivée à 1,52 mo c'est déjà beaucoup mieux ;).

Pour ce qui concerne la macro undo, je l'avais testée en la mettant dans un module contenant juste ces lignes, exécutée donc à partir d'un bouton mais je ne sais pas si c'était la bonne méthode en tout cas ça ne fonctionne pas. J'ai bien l'impression que c'est mission impossible.

A te relire.

Loulou
 

Yaloo

XLDnaute Barbatruc
Re : Générer des courriers types word à partir d'excel

Bonjour Loulou,

Pour la fonction Undo, il ne me semble pas que cela fonctionne pour une action effectuée par macro.

Pour les MFC, tu peux supprimer tout d'un coup, en utilisant la commande "Effacer les règles" du combo "Mise en forme conditionnelle", mais tu ne peux pas en supprimer seulement quelques unes. C'est soit tout d'un coup soit une par une.

Pour la "suppression" des cellules vides, il faut que je regarde.

A+

Martial
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 174
Membres
112 677
dernier inscrit
Justine11