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

Yaloo

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

Re,

2 possibilités, soit tu écris le nom dans la colonne 5 en dernier (pas testé, mais ça devrait fonctionner) ((supprimer les Application.EnableEvents = 0 ou -1))

Où alors en fin de macro écrire ceci :

VB:
Sub Coller()
Application.EnableEvents = 0
Set Source = Workbooks("sources1.xlsm")
Set destin = ThisWorkbook
i = destin.Worksheets(1).Range("A65536").End(xlUp)(2).Row
  derlig = Source.Sheets(3).[D65536].End(xlUp).Row
  destin.Sheets(1).Cells(i, 4) = Source.Sheets(3).Range("D" & derlig)
  destin.Sheets(1).Cells(i, 5) = Source.Sheets(3).Range("E" & derlig)
  destin.Sheets(1).Cells(i, 11) = Source.Sheets(3).Range("F" & derlig)
  destin.Sheets(1).Cells(i, 8) = Source.Sheets(3).Range("G" & derlig)
  destin.Sheets(1).Cells(i, 22) = "X"
Application.EnableEvents = -1
destin.Sheets(1).Cells(i, 4).Activate
Application.OnKey "{F2}"
Application.OnKey "~"
'On trie par rapport au Nom puis Prénom
Range("A3:AA" & [A65536].End(xlUp).Row).Sort [D3], xlAscending, [E3], , xlAscending, , , xlNo
End Sub
Toujours pas sûr que ça fonctionne :eek:

A+
 

Staple1600

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

Bonsoir à tous


Personnellement en début de module, j'ajouterai
Dim derlig&, Source As WorkBook, destin As WorkBook
 

loulouange

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

Bonsoir Martial Staple,

Martial : j'ai testé en ajoutant le NOM à la fin de la saisie et effectivement le tri n'intervient qu'à ce moment là Mais j'ai peur d'oublier car par habitude les données sont rentrées au fur et à mesuer dans l'ordre, à voir sur le temps et si je n'ai pas de meilleure solution.

J'ai également essayé de rajouter tes lignes dans les codes de mes boutons, mais il faut pour que le tri se fasse, appuyer à chaque fois sur la touche F2 du clavier. Ne pourrait on pas mettre ce code plutôt dans le code de la feuille "liste participants" ?

Je ne sais pas si tu avais vu mon post au dessus à cause de mes erreurs de manipulations, mais je me demandais si on pouvait demander à faire le tri que lorsque la colonne V ou W étaient remplies d'une X?

D'autre part, lorsque je supprime une ligne dans la feuille "liste participants" les modifications ne se font pas dans la feuille "base". Et idem si je supprime une ligne dans la feuille "Base" il n'y a aucune incidence dans la feuille "lise participants", et si je le fait manuellement dans les deux feuilles, le numéro Id n'est pas remis à jour.

Je te joins le fichier "suivi ateliers" ainsi que le fichier sources1 qui correspond au bouton "MAJ Mtp".

pour info -> - j'ai remis le code tri dans les modules 2 et 4 (boutons) : tout se passe normalement pas de décalage
- j'ai enlevé celui qui était dans la feuille "liste participants", pour l'instant je fait le tri basique avec la fonction "Trier"dans le menu excel "Données" lorsque je rentre un contact sans passer par les boutons.

Staple : j'ai rajouté ta ligne dans les codes de mes deux boutons mais je n'ai pas vu de différence, je les ai positionnées juste en dessous de Sub Coller().

Merci à vous pour votre aide.

A bientôt pour vous lire.

Bonne soirée.

Lurdes
 

Fichiers joints

Dernière édition:

Yaloo

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

Bonjour Loulou, le forum,

Je ne sais pas si tu avais vu mon post au dessus à cause de mes erreurs de manipulations, mais je me demandais si on pouvait demander à faire le tri que lorsque la colonne V ou W étaient remplies d'une X?
Oui, j'avais vu ton post, et non ce n'est pas nécessaire.

D'autre part, lorsque je supprime une ligne dans la feuille "liste participants" les modifications ne se font pas dans la feuille "base". Et idem si je supprime une ligne dans la feuille "Base" il n'y a aucune incidence dans la feuille "lise participants", et si je le fait manuellement dans les deux feuilles, le numéro Id n'est pas remis à jour.
En effet, les données resteront dans la feuille "Base", il ne faut pas les supprimer, une base est remplie au fur et à mesure, que l'on enlève ou non des données dans les autres feuilles. Si tu supprimes une ligne dans la feuille "Liste participants" les lignes du dessous sont remontées. C'est bien le but de la manœuvre ;). Si tu veux réellement supprimer la ligne dans la base, il faut créer un bouton avec suppression de la ligne dans "Liste participants" puis dans la feuille Base, faire une recherche de l'identifiant et supprimer la ligne.

Staple : j'ai rajouté ta ligne dans les codes de mes deux boutons mais je n'ai pas vu de différence, je les ai positionnées juste en dessous de Sub Coller().
La ligne que t'a fait rajouté Staple s'appelle la déclaration des variables, une variable peut être un chiffre, une lettre, un classeur, une feuille, un tableau etc... Lorsque tu déclares les variables, un type est attribué à cette variable, tu ne peux pas, dans ta macro, lui donner un type différent. Par exemple, derlig as Long (ou derlig&) ne peut recevoir qu'un chiffre (puisque c'est un N° de ligne) si tu essaies de lui mettre une valeur en lettre, tu auras une erreur. Je te mets en pièce jointe un fichier de myDearFriend! très intéressant pour comprendre les variables.

J'ai pris le problème de façon différente, pour recevoir les données de ton fichier source :
- Activation de la feuille Base
- Collage des valeurs de Source dans la feuille Base
- Attribution d'un N° d'identifiant
- Collage de ce N° dans la feuille "Liste participants"
- Activation de cette feuille
- Avec l'activation, les données de Base sont collées dans cette feuille

A te relire

Martial
 

Fichiers joints

loulouange

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

Bonjour Martial, bonjour le forum,

Tout d'abord un grand merci à toi !!! quel super boulot que tu as réalisé, j'ai un outil de travail vraiment tip top à présent ! :eek:

Je ne suis pas venue plus tôt car j'ai rencontré des galères avec le fichier mais cela semble être rentré dans l'ordre.

En effet, je ne sais pas pourquoi par moment la macro ne voulait pas reconnaître les deux fichiers sources, j'avais ce message àa chaque fois : "Erreur d'exécution 9, l'indice n'appartient pas à la sélection".

J'ai relancé plusieurs fois les fichiers, redémarré etc... et enfin cela à fonctionné. Et puis deux jours après j'ai voulu y retravailler et rebelotte encore ce message, j'ai regardé sur le net à quoi cela pouvait correspondre , j'ai même enlevé l’extension *.xlsm" dans la macro et là hazard ou pas cela a fonctionné.
C'est vraiment bizarre, là j'ai fait un test en remettant l'extension et ça fonctionne aussi, est ce normal ? J'espère que je ne vais pas avoir ce genre de galère lorsque je m'en servirais sur mon poste au boulot.

Merci pour le fichier PDF, je l'ai lu avec attention même si pour moi c'est encore difficile à assimiler. Mais j'ai bien compris l'intérêt de mettre des variables, et ce notamment pour optimiser les ressources mémoires.

Ceci dit, je pense que je dois avoir un problème justement dans une de mes feuilles car lorsque je l'active la macro prend du temps pour afficher le résultat, et justement dans cette feuille il y a en début de macro une ligne avec des variables, alors je ne sais pas d'où vient le problème.

Cela concerne la feuille "Affectation"

Je te joins le fichier, comme tu pourras le voir j'ai déjà 180 stagiaires, ici j'ai enlevé les noms et j'ai mis quelques noms fictifs. et rien qu'avec ça l'affichage est vraiment long par rapport aux autres feuilles.

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,

Pour l'erreur, le problème vient peut-être du fait que le fichier "Source" ne soit pas ouvert dans la même instance que celle du fichier "Suivi", donc pour VBA le fichier n'est pas ouvert, si cela recommence il faudrait que tu notes à quelle ligne se produit l'erreur.

Le lenteur d'affichage vient de tes Mises en Forme Conditionnelle, car à chaque fois que tu changes une cellule, la MFC est calculée.
Pour remédier à ça, en début de macro Activate de la feuille "Affectation", il faut mettre Application.Calculation = xlCalculationManual puis à la fin Application.Calculate.

De plus, j'ai regardé le reste de tes macros, dans les macros "Activate" il faut mettre :
i = [A65536].End(xlUp)(2).Row au lieu de i = [A65536].End(xlUp)(7).Row dans la feuille "Suivi"
i = [A65536].End(xlUp)(2).Row au lieu de i = [A65536].End(xlUp)(5).Row dans la feuille "Typo"

Vois le fichier

A+

Martial
 

Fichiers joints

Yaloo

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

Re,

Pour éviter l'erreur, si elle vient bien des instances d'Excel, tu peux aussi ouvrir le fichier en cliquant sur ton bouton. J'en ai profité pour réduire à une seule macro ton rapatriement de tes fichiers source1 et source2.

Voir dans le module2

A+

Martial
 

Fichiers joints

loulouange

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

Bonjour Loulou,

Pour l'erreur, le problème vient peut-être du fait que le fichier "Source" ne soit pas ouvert dans la même instance que celle du fichier "Suivi", donc pour VBA le fichier n'est pas ouvert, si cela recommence il faudrait que tu notes à quelle ligne se produit l'erreur.
En fait, l'étape est la suivante : les données sont insérées dans un premier temps dans les fichiers sources1 ou sources2, puis ensuite reportées dans le fichier "suivi atelier" d'où l'idée d'avoir mis en place ces bouton pour recopier au fur et à mesure la dernière ligne dans le fichier destinataire. Donc en principe les fichiers sources sont toujours ouverts avant.
C'est pourquoi je voulais régler le problème lors d'oubli de cette manipulation : donc de pouvoir rajouter la dernière ligne manuellement dans le fichier "suivi atelier" sans avoir le problème de tri. Le problème est à présent réglé.

Donc je ne pense pas que le problème venait de là.

Le lenteur d'affichage vient de tes Mises en Forme Conditionnelle, car à chaque fois que tu changes une cellule, la MFC est calculée.
Pour remédier à ça, en début de macro Activate de la feuille "Affectation", il faut mettre Application.Calculation = xlCalculationManual puis à la fin Application.Calculate.
.

Merci pour cette astuce, c'est bien plus rapide à présent :)

De plus, j'ai regardé le reste de tes macros, dans les macros "Activate" il faut mettre :
i = [A65536].End(xlUp)(2).Row au lieu de i = [A65536].End(xlUp)(7).Row dans la feuille "Suivi"
i = [A65536].End(xlUp)(2).Row au lieu de i = [A65536].End(xlUp)(5).Row dans la feuille "Typo"
Désolée, je m'embrouille les pinceaux. J'ai pourtant repris tes explications dans un de tes précédents posts car justement j'avais un problème dans l'une de ces deux feuilles qui contenait au départ les lignes ci dessus mais je ne sais pourquoi les données ne se recopiées pas sur la bonne ligne, donc j'avais modifié dans le code, et là cela a fonctionné.
Bon à présent tout semble etre rentré dans l'ordre.

J'ai regardé ton deuxième fichier dans lequel tu as regroupé les deux boutons dans un seul module, bien qu'il n'ai besoin de vérifier si les fichiers sources soient ouverts puisqu'au départ je les utilise, j'ai voulu toutefois tenter de le mettre en pratique mas là je sèche et ce n'est aps faute d'avoir essayer toutes les possibilités.

Je te joins le fichier afin que tu puisses me dire où sont mes erreurs.

A te relire.

Loulou
 

Fichiers joints

Yaloo

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

Bonjour Loulou,

J'ai regardé ton deuxième fichier dans lequel tu as regroupé les deux boutons dans un seul module, bien qu'il n'ai besoin de vérifier si les fichiers sources soient ouverts puisqu'au départ je les utilise, j'ai voulu toutefois tenter de le mettre en pratique mas là je sèche et ce n'est aps faute d'avoir essayer toutes les possibilités.

Je te joins le fichier afin que tu puisses me dire où sont mes erreurs.
Tes boutons sont rattachés à une macro (chacun à sa macro : MTP ou Pignan), dans chaque macro, on indique le nom de la macro Coller suivi du nom du fichier à ouvrir ainsi que du N° de la colonne pour le X.

Ce qui donne :
VB:
Sub MTP()
'Macro + Fichier + N° colonne
Coller "sources1.xlsm", 22
'On pourrait aussi écrire :
Coller("sources1.xlsm", 22)
End Sub


Sub Pignan()
Coller "sources2.xlsm", 23
End Sub
VB:
'Macro(Nom du fichier, N° colonne)
Sub Coller(Fichier As String, c&) 'Fichier étant le nom du fichier, c étant le N° colonne pour le X
Nous récuperons le nom du classeur (Source1.xlsm ou Source2.xlsm) dans la variable Fichier, et le N° de colonne (22 ou 23) dans la variable c

Ensuite dans la macro par elle-même, lorsque l'on a besoin du nom du classeur, on utilise la variable Fichier et c pour le N° de colonne.

En espérant avoir répondu à tes questionnements.

A+

Martial
 

loulouange

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

Bonjour Martial,

Merci pour tes explications, c'est bien ce que je pensais avoir compris dans l'ensemble, mais c'est au niveau de la façon demander à excel d'ouvri soit l'un ou l'autre fichier sources, j'ai tenté plusieurs possibilité mais rien n'y fait.

Mais le plus gros problème que je rencontre actuellement est un gros bug avec mon pc.
Mon curseur est incontrôlable, et je me demande si cela ne vient pas d’excel et plus particulièrement de la macro qui se trouve dans mon fichier.

En effet, j’ai ce problème depuis deux semaines environ, cela arrive d’un coup et cela persiste quelques temps meme après démarrage du pc et puis disparaît. Un jour j’ai cru que cela venait d’excel car c’était apparu suite à son utilisation mais je n’étais pas sure.

Dès que cela se produit, que se soit dans excel ou dans n’importe quel programme ou navigateur de mon pc, je ne peux plus rien faire tout défile trop vite. j’ai essayé de voir si c’était un problème matériel ou autre mais je n’ai rien trouvé. Et au démarrage du pc j’ai une série de BIP.

Après une pause de quelques jours, hier après midi j’ai voulu retravailler sur mon fichier excel pour arriver à comprendre la macro avec le module2, et lorsque j’ai cliqué sur le bouton « MAJ MTP » tout s’est affolé, et au lieu de la soucre1 c’est la source2 qui s’est ouverte (je sais que ma formule est totalement erronée) et là de nouveau mon curseur défile à une vitesse dans les cellules, en général de gauche à droite, je me retrouve toujours en fin de ligne ou de cellule.

sinon le code de cette macro est celui ci (cela concerne le fichier que j'ai mis en pièce jointe dans mon précédent post) :

Sub MTP()
Coller "sources1.xlsm", 22
End Sub
Sub Pignan()
Coller "sources2.xlsm", 23
End Sub

Sub Coller(Fichier As String, c&) 'Fichier étant le nom du fichier, c étant le N° colonne pour le X
Dim derlig&, i&, j&, Chemin$, Ouv As Boolean
Application.ScreenUpdating = 0: Application.EnableEvents = 0
Chemin = ThisWorkbook.Path & "\"

On Error Resume Next
'Job75 : http://www.excel-downloads.com/forum/212488-copie-automatique-de-donnees-de-trois-colonnes-vers-un-autre-fichier-de-maniere-auto.html#post1334577
'---si le fichier source est fermé on l'ouvre---
If IsError(Workbooks(Fichier)) Then
Workbooks.Open "C:\Lou\sources1.xlsm"
Workbooks.Open "C:\Lou\sources2.xlsm"
Ouv = True
End If
On Error GoTo 0
'-----------------------------------------------
ThisWorkbook.Activate
Set Source = Workbooks("sources1.xlsm")
Set Source = Workbooks("sources2.xlsm")
Sheets(6).Activate
i = Range("A65536").End(xlUp)(2).Row
With Source.Sheets(3)
derlig = .[D65536].End(xlUp).Row
Cells(i, 4) = .Range("D" & derlig)
Cells(i, 5) = .Range("E" & derlig)
Cells(i, 11) = .Range("F" & derlig)
Cells(i, 8) = .Range("G" & derlig)
Cells(i, c) = "X"
End With
If i > 3 Then
Cells(i, 1) = Cells(i - 1, 1) + 1
Else
Cells(3, 1) = 1
End If
j = Sheets(1).[A65536].End(xlUp)(2).Row
Sheets(1).Cells(j, 1) = Cells(i, 1)

'---fermeture du fichier s'il a été ouvert---
If Ouv Then
Application.EnableEvents = False
Workbooks(Fichier).Close False
Application.EnableEvents = True
End If
'--------------------------------------------
Application.EnableEvents = -1
Sheets(1).Activate
Application.ScreenUpdating = -1

End Sub
Penses tu que cela puisse venir de l’éxecution de la macro ?un virus ?

Voila pour l’instant mon pc fonctionne, je n’ose plus utiliser ce fichier, les autres versions ne me posent pas de problème.

En espérant que tu puisses comprendre ce qui m’arrive.

Dans l’attente de te lire.

Loulou
 

Yaloo

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

Bonjour Loulou, le forum,

Je ne vois pas pourquoi cela viendrait du fichier car il n'y a pas d'action sur le curseur et cela n'interférait pas sur les autres applications.

Peut-être un virus, mais je ne peut pas t'en dire plus, je ne suis pas très fort là-dedans.

As-tu essayé le fichier sur un autre PC, car chez moi, je n'ai pas de soucis.

A+

Martial
 

loulouange

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

Merci Martial pour ta rapide réponse.

As tu essayé de lancer la macro via le bouton MTP ? je ne sais pas si tu avais gardé mon fichier sources1 ?

Mais je t'avoue que je ne comprends pas non plus, mais en tout cas hier cela s'est produit en lançant la macro, je pensais aussi à mon fichier sources2 ? mais bon je m'en suis toujours servi sans problème.

Sinon je n'ai pas essayé sur un autre pc, par crainte d'infecter ce dernier également si c'est un virus ou de déclencher ce bug.

Y a t'il moyen de vérifier si une macro ou un fichier excel contient un virus ?
 

Yaloo

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

Re,

J'ai essayé de lancer la macro aussi bien par le bouton que par VBE, il n'y a pas de problème de curseur.

Je viens de vérifier les fichiers "suivi ateliers avec ID - 29-10 vierge (Martial)" et "sources1" avec mon antivirus et sur www.virustotal.com qui est un site permettant de scanner des fichiers avec plusieurs antivirus, et il n'y a pas de virus dans ces 2 fichiers (enfin pas de virus connus :eek:).

S'il ne s'agit que d'un problème de souris qui bouge, n'y aurait-il pas un problème avec ton driver de souris, cela m'est déjà arrivé.

A+
 

loulouange

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

re Martial,

Sympa d'avoir pris le temps de vérifier mes fichiers. Je vais aller sur ton site pour scanner mon fichier sources2.

Je pensais que peut être c'était dû à la macro car je lui demande d'ouvrir les deux fichiers sources en même temps apparemment (ce qui n'est pas bon je suppose) et donc au final je me retrouve avec le fichier soucces2 ouvert, peut être que cela crée un conflit lors de l'ouverture des deux fichiers ?

Pour la question de problème matériel, j'ai essayé d'étudier cette piste, j'ai enlever le port usb de ma souris (sans fil) et toujours le même problème. J'ai tenté aussi désactiver mon clavier et là pareil.

J'ai fait un scan, antivirus, vérifier au niveau de la mémoire mais je n'ai rien trouvé.

Et là depuis ce matin, aucun problème.

Je vais donc vérifier mon fichier sources2, et retenter avec l'autre fichier "suivi ateliers" où les macros ne sont pas regroupées dans un seul module voir si cela se reporduit.

Encore merci de ta disponibilité et de ton aide.

A+

Loulou
 

loulouange

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

Bonjour Martial, le forum,

Depuis la dernière fois aucun problème de pc, je n'ai pas retenter le fichier avec la macro qui regroupe les deux boutons.

J'ai scanné via ton site mon fichier sources2 et aucun virus détecté.

Je préfère rester sur l'avant dernière version du fichier contenant les modules2 et modules4, qui fonctionne parfaitement.

Je vais encore t’embêter avec un autre soucis que je viens de constater.

J'ai dans ma feuille "Affectation" dans la colonne 'J' "Bilan date d'échéance" une formule permettant de calculer le mois suivant la date indiquée dans la colonne 'H'. je te mets la formule ci-dessous car quand la feuille se met à jour elle disparaît :

Code:
=SI(ESTVIDE(I3);"";FIN.MOIS(I3;-1))
A ce sujet : est il normal que je sois obligée de cliquer sur enregistrer pour voir le résultat, il ne se fait pas instantanément ?

Etant donné que la feuille "Base" renvoie les données dans la feuille "Affectation", la formule est remplacée par le résultat.

J'ai cherché sur le forum, je crois qu'il faut utiliser ceci " Shift:=xlDown" mais je ne sais pas trop comment l'adapter dans mon cas.

Je te joins le fichier.

Au plaisir de te lire.

A+

Loulou
 

Fichiers joints

loulouange

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

Bonjour Martial,

Je pense avoir trouvé la solution, peux tu me dire si cette méthode est fiable et ne risque pas d'occasionner un décalage au niveau de la cellule ?

J'ai supprimé la formule qui se trouvait dans le feuille "affectation" et je l'ai insérée dans la feuille "base" :

Code:
=SI(ESTVIDE(P7);"";FIN.MOIS(P7;-1))
Puis dans la macro, j'ai supprimé le renvoie des données de la colonne J de la feuille "affectation" vers la colonne AB de la feuille "Base".

Cela semble bien fonctionner, ci-joint fichier. Toutefois lorsque je rentre la date dans la colonne "I" de la feuille "affectation" le résultat dans la cellule "J" ne s'affiche pas tout de suite, il faut bien que je fasse au moins 2 rafraîchissements, je ne sais pas si c'est normal.


A+ pour te relire et bon week end.

Loulou
 

Fichiers joints

Yaloo

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

Bonjour Loulou, le forum,

Vois les macros de la feuille Affectation, j'y ai inséré une condition si la date de fin est saisie ou non.

A+

Martial
 

Fichiers joints

loulouange

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

Bonjour Martial,

Merci pour ton fichier avec les nouvelles macros que j'ai étudiées avec attention.

Etant donné que le résultat de la colonne "date d'échéance" de la feuilles "affectation" se fait via la macro, du coup la formule que j'avais insérées dans la feuille "Base" est inutile donc. Mais si je la supprime, la cellule restera vide.
puisque dans la macro on ne fait pas la copie de cette cellule de la feuille "affectation" vers "base" et vice versa :

voici les correspondances :

Code:
.Cells(j, 28) = Cells(i, 10)
et
Code:
Cells(i, 10) = .Cells(j, 28)
Le fait que le résultat ne se fasse pas dans la feuille "Base" ne pose pas de problème ?

Autrement, la méthode que j 'avais utilisée n'était pas fiable ?
Est il indispensable de renvoyer toutes les cellules d'une ligne se trouvant dans la feuille "Base" vers "Affectation" ?

A te relire.

Loulou
 
Dernière édition:

Yaloo

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

Bonjour Loulou, le forum,

Le fait que le résultat ne se fasse pas dans la feuille "Base" ne pose pas de problème ?
Non, pas de problème du tout.

Autrement, la méthode que j 'avais utilisée n'était pas fiable ?
La méthode que tu as utilisée était tout à fait correcte et fiable, mais avec les différentes macro Activate et Change les cellules ne se mettaient pas à jour de suite, c'est pourquoi j'ai préféré utiliser le calcul dans la macro.

Est il indispensable de renvoyer toutes les cellules d'une ligne se trouvant dans la feuille "Base" vers "Affectation" ?
Je ne sais pas c'est à toi de voir, ce qu'il est bon de copier dans la feuille Affectation, je t'en laisse seule juge ;), pour la technique tu sais comment faire maintenant :D.

A+

Martial
 

loulouange

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

Bonjour Martial, le forum,

Ca ne se voit pas trop mais j'arrive à comprendre certaines choses ;) et j'en apprends beaucoup, mais je dois aussi mal m'exprimer dans mes questions.

Pour la question de savoir si ma méthode était bonne c'est parce que je l'avais utilisée pour un autre fichier qui contenait plusieurs cellules avec différentes formules également. Donc pour ce fichier je vais laisser tel quel pour le moment, il faudrait que j'étudie les différentes possibilités avec Application.WorksheetFunction.

Pour mon autre question :

Est il indispensable de renvoyer toutes les cellules d'une ligne se trouvant dans la feuille "Base" vers "Affectation" ?
En fait je pensais que pour que les lignes et colonnes soient bien alignées donc éviter les décalages, il fallait impérativement faire un renvoie e de toutes les lignes avec toutes les colonnes de la feuille "active" vers la feuille "base" et vice versa.

J'ai bien saisi que la feuille "base" avec l'id permettait d'éviter les problèmes de décalage et aussi de pouvoir mettre à jour les tableaux des autres feuilles si une modification intervenait dans l'une d'elles.

Donc ce que j'en conclue c'est qu'il faut que toutes colonnes de chaque feuille soient renvoyées dans la feuille "Base".
avec la commande Worksheet_Change(ByVal Target As Range)

Par contre si je n'utilise pas la commande Worksheet_Activate() qui permet de renvoyer les données de la feuille "Base" vers les autres feuilles cela n'aura pas d'incidences si ce n'est que les modifications ne se feront pas sur toutes feuilles.

Ce qui m'a perturbée c'est que suite à la formule de calcul que tu as insérée dans la macro :

Etant donné que le résultat de la colonne "date d'échéance" de la feuilles "affectation" se fait via la macro, du coup la formule que j'avais insérées dans la feuille "Base" est inutile donc. Mais si je la supprime, la cellule restera vide.
puisque dans la macro on ne fait pas la copie de cette cellule de la feuille "affectation" vers "base" et vice versa :

voici les correspondances :

Code :
.Cells(j, 28) = Cells(i, 10)
et
Code :
Cells(i, 10) = .Cells(j, 28)
J'ai bien vu que dans la macro on indiquait le résultat dans la feuille "affectation" variable "i" si la cellule date était remplie mais on ne met pas le renvoie dans la feuille "Base" variable "j".

A te relire.

Loulou
 
Dernière édition:

Discussions similaires


Haut Bas