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

Yaloo

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

Bonjour loulou,

Voici ton fichier, bon ben, c'est pas mal ce que tu avais fait. Il y avais qq erreurs mais tu t'en est pas mal sortie.

J'ai rajouté les 3 lignes de code que tu souhaitais pour les colonnes I, K et Y.

Tu avais changé le nom des signets, en remplaçant Signet par Atelier, de ce cas-là il faut aussi changer dans la macro. Il y a qq erreurs de positionnement de signets dans les fichiers Word (à toi de voir).

Je pense (mais n'en suis pas sûr, à cause des modifications de signet) qu'il faut rajouter 1 ou 2 colonnes dans la ListBox, j'en ai ajouté 2, et redéfinit la plage de données (mais la encore je ne suis pas sûr d'avoir bien fait, à toi de me dire).

A te relire

Martial

PS : En ajoutant une feuille à la fin du classeur, il fallait modifier les macros d'envoi de données et de tri.
 

Fichiers joints

loulouange

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

Bonjour Martial,

Je viens de rentrer après quelques jours de vacances, je vais regarder tes modifications et reviens te voir dès que possible.

Merci encoce pour ton aide.

Loulou
 

loulouange

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

Bonjour Martial,

Sincèrement désolée pour toutes ces erreurs, j'ai regardé en détail et comparé mon tableau avec le tien et je me suis rendue compte que j'avais fait quelques boulettes :(

En tout cas cela m'a permis de comprendre beaucoup de choses grâce à toi et je t'en remercie. Comme j'avais oublié d'enlever des colonnes dans la feuille CB du coup ça faussait tout dans EL et EM. Mais j'ai réussi à appliquer ta formule pour remettre les données dans les bonnes colonnes.

Pour les signets, là aussi c'est encore ma faute, je sais pas pourquoi j'ai remplacé par "atelier" d'autant plus que cela m'effaçait le contenu des mes listes déroulantes, donc j'ai remis "Signet" et là tout est bien en place, enfin presque j'ai toujours ce problème de mettre la civilité en début de la lettre et dans la formule de politesse. J'ai fait insertion renvoi "signet1" aux endroits souhaités mais ça ne marche pas. Et du coup je ne peux plus faire les accords en genre.

Sinon je viens de me rendre compte dans le tableau lorsque je rajoute un nouveau stagiaire, ce dernier se place automatiquement par ordre alphabétique, mais si il vient se positionner en dessous d'une ligne où j'ai appliqué une couleur différente de la ligne selon choix "Phase accueil" ou "Sortie" , celui ci prend le même format.

J'avais une question à te poser sur cette ligne car je n'arrive pas à comprendre :

Sheets(i).Range("A3:H" & DerL).ClearContents

Pourquoi ne mets on pas "B3:H" puisque l'on reprend à partir de la colonne civiliité ?

J'ai d'ailleurs fait un test en mettant B3 et je n'ai pas vu de changement ?


Pour la listbox : tu parles du tableau qui l'on voit lorsqu'on appuie sur le bouton GO (useform) ? si c'est le cas le plus important est de repérer le nom prénom éventuellement adresse, j'ai d'ailleurs enlevé la colonne numéro de tel.
Donc pour ta question de savoir s'il fallait rajouter une colonne ou deux je ne sais pas dans ce cas l'intérêt ?

Je te remets les fichiers que j'ai mis à jour en espérant que tu puisses mieux cerner mes soucis.

A bientot pour te lire.

Loulou
 

Fichiers joints

Dernière édition:

Yaloo

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

Bonjour Loulou,

Sincèrement désolée pour toutes ces erreurs, j'ai regardé en détail et comparé mon tableau avec le tien et je me suis rendue compte que j'avais fait quelques boulettes :(
Ne dit-on pas : Faute avouée est à moitié pardonnée ;)

... enfin presque j'ai toujours ce problème de mettre la civilité en début de la lettre et dans la formule de politesse. J'ai fait insertion renvoi "signet1" aux endroits souhaités mais ça ne marche pas. Et du coup je ne peux plus faire les accords en genre.
Pour ça je pense qu'il faut le traiter à part (je veux dire en dehors de la boucle), vois le fichier si ça te convient.

Sinon je viens de me rendre compte dans le tableau lorsque je rajoute un nouveau stagiaire, ce dernier se place automatiquement par ordre alphabétique, mais si il vient se positionner en dessous d'une ligne où j'ai appliqué une couleur différente de la ligne selon choix "Phase accueil" ou "Sortie" , celui ci prend le même format.
Oui, car tu as rajouté des colonnes et le tri n'allait pas jusqu'à la colonne Z, mais s'arrêtait à la colonne X, ne prenant pas en compte la colonne "Stade acpgt", c'est réparé dans le fichier ci-dessous.

Sheets(i).Range("A3:H" & DerL).ClearContents
Pourquoi ne mets on pas "B3:H" puisque l'on reprend à partir de la colonne civilité ?
J'ai d'ailleurs fait un test en mettant B3 et je n'ai pas vu de changement ?
Le Sheets(i) reprend le N° de chaque feuille de 2 jusqu'à l'avant-denière feuille. Comme tu n'as pas de civilité dans les feuilles CB EL et AM, il faut effacer de la colonne A jusqu'à la colonne H.

Pour la listbox : tu parles du tableau qui l'on voit lorsqu'on appuie sur le bouton GO (useform) ? si c'est le cas le plus important est de repérer le nom prénom éventuellement adresse, j'ai d'ailleurs enlevé la colonne numéro de tel.
Donc pour ta question de savoir s'il fallait rajouter une colonne ou deux je ne sais pas dans ce cas l'intérêt ?
Ok, on ne rajoute pas, on peut même cacher la colonne de la civilité.

A te relire

Martial

PS : je te remets les 3 fichiers, car j'ai rajouté le signet8 dans les fichiers Word.
 

Fichiers joints

loulouange

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

Bonjour Martial,

Tout d’abord je te remercie pour ton indulgence et pour tout l’intérêt que tu portes à mon projet.

J’ai encore quelques questions à te poser si tu veux bien.

Tu avais souligné dans un de tes précédents posts :

PS : En ajoutant une feuille à la fin du classeur, il fallait modifier les macros d'envoi de données et de tri.

J’ai regardé ton code et donc j’ai vu que tu avais rajouté dans le module « tri » -1 à la fin de la ligne :

For i = 2 To Sheets.Count – 1

Donc si je comprendre bien si je rajoute une autre colonne, ce qui fait du coup 2 colonnes après celles des CT il faudra que je mette «-2 » ?

Le Sheets(i) reprend le N° de chaque feuille de 2 jusqu'à l'avant-denière feuille. Comme tu n'as pas de civilité dans les feuilles CB EL et AM, il faut effacer de la colonne A jusqu'à la colonne H.
Je suis un peu perdue car je ne sais plus si "A3:H" concerne les colonnes de la feuille générale ou celles des conseillers.
Je pense que cela concerne les feuilles des CT, dans ce cas là pourquoi aller jusqu’à la colonne H alors que les données sont recopiées jusqu’à la colonne G dans les feuilles des CT ?


PS : je te remets les 3 fichiers, car j'ai rajouté le signet8 dans les fichiers Word.
Super, j’ai du coup rajouté le signet civilité qui manquait en début de la lettre (pas dans l’adresse) j’ai donc en tout 9 signets à présent.

J’ai tenté de mettre un code dans word pour l’accord avec les adjectifs comme je l’avais fait dans l’ancien modèle comme suit :

{IF {REF Civilité} = "Monsieur" "orienté" "orientée"} (voir dans les lettres en faisant ALT+F9)

Et j’ai remplacé par : {IF {REF Signet1} = "Monsieur" "orienté" "orientée"}

Mais ça ne fonctionne pas, je pense qu’il doit y a voir un moyen non ?


Pour en revenir au tableau, je rencontre encore des dysfonctionnements :

Au niveau de la mise en forme conditionnelle qui colorise les cellules selon le choix dans la liste déroulante.

J’ai du m’y reprendre à plusieurs fois car ça ne respectait pas les cellules concernées, j’ai remarqué que d'autres formats s'étaient rajoutés dans le tableau « mise en forme conditionnelle », j’ai tout effacé et tout repris dans la feuille CB.
J’ai fait un copier coller des listes déroulantes dans les feuilles EL et EM, mais cela ne colorise qu’une cellule, du coup j’ai tout effacé dans la feuille EL, je n’ai rien fait dans la feuille EM.
Et lorsque je vais dans le tableau mise en forme conditionnelle j’ai à nouveau une longue liste de format de cellules.

Peut on recopier une mise en forme prédéfinie vers une autre feuille sans etre obligé de tout ressaisir ?


Je reviens sur ce que j’ai dit plus haut :

Je pense que cela concerne les feuilles des CT, dans ce cas là pourquoi aller jusqu’à la colonne H alors que les données sont recopiées jusqu’à la colonne G dans les feuilles des CT ?
En faisant d’autres tests, j’ai remarqué dans la feuille CB, une fois que le stagiaire est rajouté et que je rempli à la suite les autres colonnes, et notamment la colonne H qui correspond à l’atelier n°1 , Si une ligne se rajoute au dessus de celle-ci, la croix disparait, donc j’ai modifié dans le code et j’ai mis "A3:G".

J’ai aussi le problème avec la formule que j’ai mise dans la colonne F « Bilan date échéance », car idem lorsqu’une ligne se rajoute elle s’efface.

J'ai voulu protéger ces données en verrouillant cette colonne mais ensuite j'ai eu un message d'erreur dans la macro. j'ai donc annuler cette manip.


Je te remets ici le fichier excel.

Au plaisir de te lire.

Loulou
 

Fichiers joints

loulouange

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

Je reviens avec de nouvelles modifications, suite à l'erreur concernant les formules dans la colonne F "bilan date échéance" des CT

J'ai interverti les colonnes pour mettre cette dernière à la fin, donc pas prise en compte dans la plage citée dans le code vba

"A3:G" devient "A3:F" (Les formules sont à présent dans la colonne G).

J'ai fait le test et je n'ai plus le problème de formule qui s'efface. Par contre toutes les colonnes qui sont renseignées à la suite de la colonne F donc de H à Q ne suivent pas si la ligne du stagiaire est déplacée selon l'ordre alphabétique.

je te remets donc la dernière version du fichier excel.
 

Fichiers joints

Yaloo

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

Bonsoir Loulou,

J'y regarde quand je rentre de vacances.

A+

Martial
 

Yaloo

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

J’ai regardé ton code et donc j’ai vu que tu avais rajouté dans le module « tri » -1 à la fin de la ligne :

For i = 2 To Sheets.Count – 1

Donc si je comprendre bien si je rajoute une autre colonne, ce qui fait du coup 2 colonnes après celles des CT il faudra que je mette «-2 » ?
Tu veux dire 2 feuilles et non colonne ?

Je suis un peu perdue car je ne sais plus si "A3:H" concerne les colonnes de la feuille générale ou celles des conseillers.
Je pense que cela concerne les feuilles des CT, dans ce cas là pourquoi aller jusqu’à la colonne H alors que les données sont recopiées jusqu’à la colonne G dans les feuilles des CT ?
"A3:H" doit correspondre aux feuilles des conseillers.

Super, j’ai du coup rajouté le signet civilité qui manquait en début de la lettre (pas dans l’adresse) j’ai donc en tout 9 signets à présent.

J’ai tenté de mettre un code dans word pour l’accord avec les adjectifs comme je l’avais fait dans l’ancien modèle comme suit :

{IF {REF Civilité} = "Monsieur" "orienté" "orientée"} (voir dans les lettres en faisant ALT+F9)

Et j’ai remplacé par : {IF {REF Signet1} = "Monsieur" "orienté" "orientée"}

Mais ça ne fonctionne pas, je pense qu’il doit y a voir un moyen non ?
Avec Word je ne sais pas si l'on peut faire ce que tu décris ci-dessus, par contre au post#18 j'avais émis une hypothèse, en ajoutant un signet à la fin du mot à accorder.

En faisant d’autres tests, j’ai remarqué dans la feuille CB, une fois que le stagiaire est rajouté et que je rempli à la suite les autres colonnes, et notamment la colonne H qui correspond à l’atelier n°1 , Si une ligne se rajoute au dessus de celle-ci, la croix disparait, donc j’ai modifié dans le code et j’ai mis "A3:G".
Au post#22 je parlais de ce genre de problème. Il faut peut-être travailler autrement, ne pas supprimer les données mais lorsque l'on cherche les données pour chaque conseiller, il faut vérifier si cette ligne existe, si tel n'est pas le cas dans ce cas-là on la rajoute à la fin puis on lance le tri. :confused:

Dis-moi ce que tu en pense.

A te relire

Martial
 

loulouange

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

Bonjour Martial, j'espère que tes vacances ont été bonnes :)

Pour ta première question en effet je voulais parler de feuille et non de colonne désolée.

Je me souviens de ton post#18 dans lequel tu me parlais de cette formule à mettre dans la macro, je pensais qu'en passant par word cela serai plus simple, si bien sur cela est possible.
Donc pour la macro, il faudra rajouter une ligne avec la fonction "IF colon 2="Monsieur" then ?? (valeur qui prendra la valeur signet 10 sinon 11 dans WORD alors ?

Je viens de relire ton post#22 sur le coup je n'avais compris exactement ce dont tu parlais, je pensais que le tri alphabétique risquait de ne pas se faire dans l'ordre. Là c'est plus clair à présent. Je pense que ta méthode d'ajouter la ligne à la fin du tableau du conseiller et faire le tri ensuite sur toute la ligne pourrait régler le problème.

Merci pour ton aide.

Dans l'attente de te lire, je te souhaite une bonne semaine.

Loulou
 

Yaloo

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

Bonsoir Loulou,

Je vois ça au plus tard mercredi, difficile de faire avant.

A+

Martial
 

Yaloo

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

Bonjour Loulou,

Je ne t'ai pas oublié, mais j'ai qq problèmes pour modifier ton fichier.

Il y avait plusieurs possibilités envisageable mais elles ne me convenaient pas :

- Soit on agit sur un bouton pour n'envoyer que la dernière ligne, mais si l'on oubli de le faire, alors les données ne sont pas envoyées.
- Soit on envoie les données lorsque toute la ligne est remplie, mais si par exemple il n'y a pas d'"adresse 2" alors les données ne seront jamais envoyées.

Pour finir, j'ai choisi d'envoyer les données que lorsque la colonne A est modifiée. La macro copie les données à la première ligne vide de la feuille du conseiller, puis fait le tri. Cette solution fonctionne, mais si tu modifies une ligne (dans "général") cela ne sera pas modifié dans la feuille du conseiller. Et si tu modifies un élément de la colonne A, cela va renvoyer une nouvelle ligne.
Par exemple, tu as une ligne pour le conseiller CT, dans "général", si tu changes CT par EL, cela va créer une ligne dans EL mais celle de CT ne sera pas enlevée.

A te relire

Martial
 

Fichiers joints

Yaloo

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

Re,

Voici la version avec l'accord de orienté et convoqué. Attention il ne faut pas champ.

A+

Martial
 

Fichiers joints

loulouange

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

Bonsoir,

Merci pour tes fichiers, je vais les étudier et reviens vers toi.

Bonne soirée.

Loulou
 

loulouange

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

Bonjour Martial,

J'ai regardé tes documents, j'ai eu un peu de mal au début mais c'est parce que tu as pris une ancienne version mais j'ai pu remettre les codes à jour (ça m'a fait un bon exercice :eek:)

Impec pour les signets permettant les accords !

Par contre pour la question du tri, il faudrait refaire comme auparavant, j'en avais parlé dans mon post#26

Par contre, lorsque je remplis la feuille "général" au départ, je ne sais pas quel conseiller va suivre la personne donc la case va rester vide un moment, j'aurais voulu faire le tri alphabétique meme avec la case vide.
J'ai relevé dans le code de la feuille "Général" ceci :

DerL = Sheets(CT).[B65536].End(xlUp)(2).Row

tu as rajouté (2) : à quoi cela correspond il ?

J'ai tenté de comprendre comment tu as fait pour que régler le problème de tri dans les feuilles des conseillers se fasse sur toute la ligne et évite ainsi que le contenu colonnes après la colonne G soit décalé.

J'ai constaté que tu avais modifié cette ligne :

.Range("A2:Q" & .[B65536].End(xlUp).Row).Sort [B2], xlAscending, [C2], , xlAscending, [D2], xlAscending, xlYes

J'ai du mal à comprendre la signification, pourrait tu me mettre une petite explications de cette règle ?

Pour finir, il est vrai que si l'on doit changer une info dans l'onglet "Général" elles ne seront pas mises à jour dans les onglets des conseillers.

En général il est rare que le nom du conseiller change, mais si cela arrivait il faudra être vigilent et bien faire le changement dans les autres onglets.

Ensuite ce qui peut changer se sont les coordonnées du bénéficiaire, les modifications ne se feront que dans l'onglet général. Etant donné que la colonne numéro de tel se trouve aussi dans celles des conseillers je vais la protéger pour être sure que la modification ne puisse se faire que dans l'onglet "général".

Sinon, là ou c'est un peu embêtant c'est lorque le bénéficiaire change de statut "Stade Acgpt" dans la colonne Y de l'onglet général et qui est repris dans les onglets des conseillers dans la colonne E.

Car il faudra le faire dans tous les onglets à chaque fois. Je ne vois pas comment faire autrement.

J'avais une autre question, j'ai remarqué que lorsque je faisait une action sur le tableau et que je me rends compte d'une erreur, je n'ai pas le moyen de revenir en arrière et d'annuler les dernière modifications, est ce normal ?

Je te remets ici tous les fichiers mis à jour.

Dans l'attente de te lire.

Loulou
 

Fichiers joints

Yaloo

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

Bonjour Loulou,

J'ai regardé tes documents, j'ai eu un peu de mal au début mais c'est parce que tu as pris une ancienne version mais j'ai pu remettre les codes à jour (ça m'a fait un bon exercice :eek:)
C'est bien, je vais me tromper plus souvent ;)

Par contre pour la question du tri, il faudrait refaire comme auparavant, j'en avais parlé dans mon post#26

loulouange a dit:
Envoyé par loulouange
Par contre, lorsque je remplis la feuille "général" au départ, je ne sais pas quel conseiller va suivre la personne donc la case va rester vide un moment, j'aurais voulu faire le tri alphabétique meme avec la case vide.
Dans ce cas-là, il faudra surement mettre un bouton, car si l'on fait une macro à chaque changement de données, cela risque de ne pas être évident à suivre.

DerL = Sheets(CT).[B65536].End(xlUp)(2).Row

tu as rajouté (2) : à quoi cela correspond il ?
Dans le cas d'une ligne, le (2) décale la valeur vers le bas d'une ligne (donc la première ligne vide)


.Range("A2:Q" & .[B65536].End(xlUp).Row).Sort [B2], xlAscending, [C2], , xlAscending, [D2], xlAscending, xlYes
Le point "." devant Range ou [B65536], permet de faire suite à With Sheets(i), on va donc trier les données de la feuille (i).
Pour sélectionner une plage de valeur, on utilise Range(PremièreCellule : DernièreCellule) : PremièreCellule = A2 ; DernièreCellule va être dans la colonne Q (d'où le :Q"), pour trouver la dernière ligne de la plage, nous cherchons la dernière ligne de la colonne B (celle qui contient les noms, on est sûr que cette cellule est remplie) [B65536].End(xlUp).Row

Ensuite ce qui peut changer se sont les coordonnées du bénéficiaire, les modifications ne se feront que dans l'onglet général. Etant donné que la colonne numéro de tel se trouve aussi dans celles des conseillers je vais la protéger pour être sure que la modification ne puisse se faire que dans l'onglet "général".
Il y a peut-être une solution, mais je n'ai pas le temps de la tester maintenant, ce serait de copier/coller avec liaison. Je testerai plus tard. Cette solution résoudra peut-être ton point N°2.

Sinon, là ou c'est un peu embêtant c'est lorsque le bénéficiaire change de statut "Stade Acgpt" dans la colonne Y de l'onglet général et qui est repris dans les onglets des conseillers dans la colonne E.
Je ne suis pas sûr d'avoir compris mais la solution que je te propose ci-dessus règlera peut-être ton problème.

J'avais une autre question, j'ai remarqué que lorsque je faisait une action sur le tableau et que je me rends compte d'une erreur, je n'ai pas le moyen de revenir en arrière et d'annuler les dernière modifications, est ce normal ?
Oui, car dès que tu modifies une cellule, la macro évènementielle Private Sub Worksheet_Change(ByVal Target As Range) se lance, et donc tu perds la possibilité de revenir en arrière.

Tu ne m'as pas mis le dernier fichier Excel. Est-ce bien celui que j'ai mis la dernière fois ?

A+

Martial
 

loulouange

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

oups je viens de voir que mon fichier excel n'a pas été pris en compte donc je te le remets.

Citation Envoyé par loulouange Voir le message
J'ai regardé tes documents, j'ai eu un peu de mal au début mais c'est parce que tu as pris une ancienne version mais j'ai pu remettre les codes à jour (ça m'a fait un bon exercice )
C'est bien, je vais me tromper plus souvent ;)
je n'aurais pas du ? :( j'avais pourtant mis en pièces jointes mes derniers fichiers lors de mon précédent post. En fait c'est des petites choses comme par exemple dans les lettres types j'avais rajouté un signet Civilité en début de la lettre (pas celui de l'adresse) donc je l'ai remis.
et ensuite dans la macro comme les colonnes avaient changé de position il fallait mettre à jour les numéros.

Sinon, là ou c'est un peu embêtant c'est lorsque le bénéficiaire change de statut "Stade Acgpt" dans la colonne Y de l'onglet général et qui est repris dans les onglets des conseillers dans la colonne E.

Je ne suis pas sûr d'avoir compris mais la solution que je te propose ci-dessus règlera peut-être ton problème.

en fait dans l'onglet "général" lorsque je mets le stade de l'accompagnement, c'est la colonne qui contient une liste déroulante: Phase Accueil, Phase Acpgt, Sorite. etc...

Cette liste se retrouve aussi dans la feuille des conseillers.

Donc quand je choisis un élément dans liste déroulante dans l'onglet Général et que je renseigne le nom CT , la ligne va se recopier dans la feuille du conseiller concerné, et donc l'info contenu dans la colonne de la liste déroulante.

Par la suite je suis amenée à mettre à jour la situation du stagiaire ce qui implique que je devrais modifier mon choix dans la liste déroulante selon l'étape de l'accompagnement action que je souhaiterais faire à partir de la feuille Général si possible.
Mais comme la ligne à déja été copiée une fois les modifications ne seront pas prises en compte.

Pour le tri alphabétique, auparavant le tri se faisait dès que la colonne NOM était remplie, pourquoi ne peut on pas faire ainsi ? Autrement le choix de mettre un bouton me parait une bonne solution.

Je n'ai pas eu le temps de regarder en détails toutes tes réponses, et je te remercie d'avoir répondu à mes interrogations sur les formules, je vais les examiner en détails et te dirais si c'est enfin clair pour moi.

Voila pour ce soir, j'espère ne pas trop en demander. prends ton temps il n'y a pas d'urgence.

Encore merci à toi.

Bonne soirée.
 

Fichiers joints

loulouange

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

Bonjour Martial,

Je reviens vers toi après avoir analysé tes explications.

Pour la première :

Citation Envoyé par loulouange Voir le message
DerL = Sheets(CT).[B65536].End(xlUp)(2).Row

tu as rajouté (2) : à quoi cela correspond il ?
Dans le cas d'une ligne, le (2) décale la valeur vers le bas d'une ligne (donc la première ligne vide)
Si je comprends bien, si on ne faisait pas de tri automatiquement dans la colonne du conseiller, on aurait le résultat suivant à savoir :

Une fois que les données de la ligne située dans la feuille « général » sont recopiées dans la feuille du conseiller concerné :
Ces dernières se retrouvent tout en bas du tableau : nous avons une ligne vide entre le dernier bénéficiaire qui a été ajouté et le nouveau ?

Pour la deuxième :

Citation Envoyé par loulouange Voir le message
.Range("A2:Q" & .[B65536].End(xlUp).Row).Sort [B2], xlAscending, [C2], , xlAscending, [D2], xlAscending, xlYes
Le point "." devant Range ou [B65536], permet de faire suite à With Sheets(i), on va donc trier les données de la feuille (i).
Pour sélectionner une plage de valeur, on utilise Range(PremièreCellule : DernièreCellule) : PremièreCellule = A2 ; DernièreCellule va être dans la colonne Q (d'où le :Q"), pour trouver la dernière ligne de la plage, nous cherchons la dernière ligne de la colonne B (celle qui contient les noms, on est sûr que cette cellule est remplie) [B65536].End(xlUp).Row
J'ai bien compris l'explication concernant le début de cette ligne :
Range("A2:Q" & .[B65536].End(xlUp).Row).

On parle bien des colonnes se trouvant dans les feuilles des CT ?


Mais ce qui suit m'échappe encore :
Sort [B2], xlAscending, [C2], , xlAscending, [D2], xlAscending, xlYes



Désolée si mes questions peuvent paraître bêtes, j'aimerais bien comprendre ce que je fais afin de pouvoir les reproduirie.

Merci pour ton aide.

Loulou
 

Yaloo

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

Bonjour Loulou,

Tout d'abord tes questions ne sont pas bêtes, je préfère les personnes qui essaient de comprendre plutôt que d'appliquer sans réfléchir.

Si l'on met DerL = Sheets(CT).[B65536].End(xlUp).Row, DerL va correspondre à la dernière ligne pleine de la colonne B en rajoutant le (2), ça décale d'une ligne, nous obtenons la première ligne vide de la colonne B.

Pour ta deuxième question : Sort correspond au tri, mais il faut lui dire quoi trier, avec [B2], xlAscending on va trier à partir de la cellule B2 dans l'ordre croissant puis [C2], , xlAscending on va trier à partir de la cellule C2 dans l'ordre croissant etc... jusqu'à 3 possibilités. xlYes en fin de ligne permet d'indiquer à VBA si en ligne 2 il y a une ligne de titre ou pas, pour avoir plus de détail fais F1 (pour avoir l'aide) sur Sort.

Je cherche une solution pour tes tris, ajouts et conservation des données de tes feuilles, mais je crois vraiment qu'il faut passer par une base regroupant toutes les données et ensuite on dispatche dans chaque feuille conseiller, je vais essayer et si c'est concluant je te ferai passer le fichier.

A+

Martial
 

Yaloo

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

Bonjour Loulou :eek:,

Voici ton fichier avec une base regroupant toutes tes données. Cela permet, entre autre, de pourvoir tout modifier, comme dit dans des posts précédant, si tu modifies un Nom de stagiaire ou un Conseiller, tout se fait automatiquement, tu n'auras rien à modifier manuellement dans plusieurs feuilles.

Pour ce faire, j'ai ajouté une feuille "Base" et dans chaque feuille une colonne Id pour Identifier correctement le "Stagiaire", il ne risque pas d'y avoir d'erreur, si par exemple, plusieurs stagiaires ont le même nom et un prénom différent.

Toutes les macros sont déplacées dans ThisWorkBook, entre il y en a 2.

Workbook_SheetActivate dès que l'on active une feuille, cette macro est déclenchée.
En fonction de la feuille affichée, les lignes de codes permettent de réaliser soit une mise à jour de la feuille s'il s'agit de "Général", soit une reconstruction complète de toutes les lignes suivant le conseiller.

Workbook_SheetChange dès que l'on modifie une cellule dans une feuille, même principe que précédemment, en fonction de la feuille, les celulles modifiées sont envoyées vers la Base, cela permet aussi de créer un nouveau "Stagiaire".

Par exemple, si tu crées un Stagiaire, un N° Id est créé puis le Nom est copié dans Base ou si tu modifies un conseiller, cette information est envoyée dans Base, lorsque tu activeras la feuille du conseiller ce stagiaire apparaitra dans la feuille.

Pour mes tests, j'avais créé une macro pour remettre les évènements actifs en cas de plantage. Je l'ai laissé, au cas où il y aurait un problème. Si rien ne se passe lorsque tu fais des modifs ou lorsque tu actives les feuilles. Tu lances la macro Relance ou tu fais Ctrl + n.

Tout n'est surement pas parfait, notamment, j'ai un doute dans Date bilan Sortie, Contrat Date fin et Bilan Date échéance, j'ai créé 3 colonnes dans Base, j'ai l'impression que certaines de ces colonnes sont identiques :confused:

A te relire

Martial

PS : La feuille Base doit pas être cachée ainsi que les colonnes Id.
 

Fichiers joints

Discussions similaires


Haut Bas