Déterminer automatiquement des tronçons mailles
Bonjour,
je suis nouveau et je vous remercie à l'avance de lire ce petit message d'aide pour le fichier en pièce jointe.
Je souhaite que la feuille excel calcule plusieurs données en fonction d'une saisie dans un espace. (déterminer des tronçons noeud et maille d'un réseau maillé).
La feuille excel en PJ montre la zone de saisie.
EN fonction de ce que je met dans cette zone de saisie le tableau détermine :
- la cellule identifiée
- la première cellule de départ (la pompe)
- la recherche de chaque donnée saisie dans l'espace de saisie
- la détermination des tronçons
- la déduction d'addition de chaque donnée de chaque tronçon
j'arrive dans une impasse depuis 3 semaines et je n'arrive pas à savoir par ou je dois commencer. J'aimerais vraiment conserver cette codification que j'utilise et qui m'est utile pour d'autres calculs par la suite plutôt que de réaliser directement des tronçons A-B B-C ......
Si vous avez une petite idée pour me lancer, je suis preneur.
Bien à vous.
Bonjour,
Tu veux quoi au juste ?
Que la procédure cherche dans ta zone de saisie (B2:V18) la lettre P (pour pompe) et ensuite parte vers la cellule remplie adjacente jusqu'à trouver la lettre T (pour té) ce qui définira le 1er tronçon puis faire de même à la recherche des autres tronçons vers les points finaux comme C1, C2 et C3 ?
Bonjour et merci.
Oui.
c'est bien ça.
j'ai fait comme exemple une zone de saisie assez petite. Elle serra beaucoup plus grande par la suite.
Aie ça commence mal, mon truc à l'ai si complexe que ça ?
Bonjour,
Je ne te cache pas que ton "truc" n'est pas simple ! Pour trouver le point de départ (la pompe, P), tu peux utiliser la fonction Find() :
Set Plage = Fe.Range("B2:V18")
Set Cel = Plage.Find("P", , xlValues, xlWhole)Pour trouver le nombre de tés, la fonction CountIf() --> NB.SI() :
NB_T = Application.CountIf(Plage, "T")et pour trouver le nombre de tronçons qui en découle, c'est le nombre de tés x 2 + 1 :
NB_Troncon = NB_T * 2 + 11 té, 3 tronçons, 2 tés, 5 tronçons, etc...
Je suppose que tu souhaites partir de la pompe vers chaque terminaux pour connaître le cheminement du fluide ?
Comme résultat tu souhaites quoi, l'adresse des cellules de départ et de fin de chaque tronçons ?
Re,
Voici mon point de départ qui doit forcément être grandement amélioré mais c'est une piste.
Les explications en commentaires dans le code.
Une boucle au minimum sera obligatoire pour rechercher tous les tronçons.
Dans ce premier code, c'est le nombre de cellules du premier tronçon qui est retourné.
J'ai créé des fonctions pour pouvoir les réutiliser dans la boucle :
Sub Troncon()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Zone As Range
Dim CelZone As Range
Dim Troncon As Range
Dim Tbl_Troncon() As Range
Dim Tbl_Sens() As String
Dim Tbl_NB_Cel() As Integer
Dim NB_T As Integer
Dim NB_Troncon As Integer
Dim I As Integer
Set Fe = Worksheets("Saisie graphique")
'défini la plage
Set Plage = Fe.Range("B2:V18")
'nombre de tés dans l'installations
NB_T = Application.CountIf(Plage, "T")
'le nombre de tronçons qui en découle
NB_Troncon = NB_T * 2 + 1
'redimensionne le tableau
ReDim Tbl_Troncon(1 To NB_Troncon)
'recherche de la pompe
Set Cel = Plage.Find("P", , xlValues, xlWhole)
'si pas trouvé la pompe, fin de procédure
If Cel Is Nothing Then Exit Sub
'défini la zone autour de la pompe pour rechercher la cellule de départ du tronçon
Set Zone = ZoneCirculaire(Fe, Cel)
'parcour les cellules à la recherche de la ou des cellules de départ du ou des tronçons (maxi 3)
'puis stocke le sens dans un tableau par rapport à la cellule centrale
For Each CelZone In Zone
If CelZone.Value <> "" And CelZone.Address <> Cel.Address Then
I = I + 1
ReDim Preserve Tbl_Sens(1 To I)
Tbl_Sens(I) = Direction(Cel, CelZone)
End If
Next CelZone
'parcour le tableau et en fonction du sens, défini la plage de recherche...
For I = 1 To UBound(Tbl_Sens)
ReDim Tbl_Troncon(1 To I)
Set Tbl_Troncon(I) = DefTroncon(Fe, Cel, Tbl_Sens(I))
Next I
'pour chercher le té
Set CelZone = Tbl_Troncon(1).Find("T", , xlValues, xlWhole)
'si pas trouvé de té, fin de procédure
If CelZone Is Nothing Then Exit Sub
'pour le test (1 dimension pour l'instant), ce tableau contient le nombre de cellules du tronçon
ReDim Tbl_NB_Cel(1 To 1)
Tbl_NB_Cel(1) = Fe.Range(Cel, CelZone).Cells.Count
'affichage...
MsgBox Tbl_NB_Cel(1)
End Sub
'défini la plage en fonction du sens
Function DefTroncon(Fe As Worksheet, Cel As Range, Sens As String) As Range
Select Case Sens
Case "Haut": Set DefTroncon = Fe.Range(Cel, Cel.End(xlUp))
Case "Bas": Set DefTroncon = Fe.Range(Cel, Cel.End(xlDown))
Case "Gauche": Set DefTroncon = Fe.Range(Cel, Cel.End(xlToLeft))
Case "Droite": Set DefTroncon = Fe.Range(Cel, Cel.End(xlToRight))
End Select
End Function
'défini la zone circulaire autour de la cellule centrale
'à affiner car pour l'instant pas pris en compte de fait que la cellule centrale
'puisse se trouver en ligne 1 et/ou en colonne A
Function ZoneCirculaire(Fe As Worksheet, Cel As Range) As Range
Set ZoneCirculaire = Fe.Range(Cel.Offset(-1, -1), Cel.Offset(1, 1))
End Function
'défini le sens de la direction à prendre pour définir la plage
Function Direction(Cel1 As Range, Cel2 As Range) As String
If Cel1.Column = Cel2.Column And Cel1.Row > Cel2.Row Then Direction = "Haut"
If Cel1.Column = Cel2.Column And Cel1.Row < Cel2.Row Then Direction = "Bas"
If Cel1.Row = Cel2.Row And Cel1.Column > Cel2.Column Then Direction = "Gauche"
If Cel1.Row = Cel2.Row And Cel1.Column < Cel2.Column Then Direction = "Droite"
End FunctionJe ne te cache pas que si le maillage est grand, le code à créer va être compliqué !
Merci ça va beaucoup m'avancer sur l'idée.
Si vous pensez que le code va être compliqué c'est peut être que je me suis planté sur la façon dont excel doit réagir. Je ne suis pas informaticien. j'ai vu seulement le côté utilisateur.
Je vais digérer votre code (compliqué pour moi) il me faut un peu de temps. je vous renvoi d'ici peu mon fichier.
Merci beaucoup pour le temps consacré
Bonjour,
amusant ton truc... Un essai
Algorithme utilisé :
un petit bonhomme veut sortir d'un labyrinthe : à chaque intersection il tourne systématiquement à droite et fait demi-tour à chaque cul-de-sac.
Chaque branche est donc explorée 2 fois, Aller et Retour, jusqu'à revenir à l'entrée.
Je te sors tout (N°, Nom, Ext A, Ext B, Longueur, Sens, ref A, Ref B, Constitution, départs et retours donc) dans un tableau que tu testes.
Au final tu diras ce que tu veux comme données et comment.
Il doit toujours y avoir un pourtour de cellules vides autour des zones saisies
Les zones sont définies ici :
Set resH = [B2:V18]
Set resV = [W2:AQ18]
On verra au moment des finitions si tu as besoin qu'elles soient détectées automatiquement.
Pour le moment c'est test et débogage de l'algorithme. Peut-être que des parcours particuliers le mettront en échec (?)
Une sélection d'un nom en AT le surligne dans les zones.
eric
Bonjour Eric et bravo
Très bonne idée !
Merci
une version pour visualiser le déplacement du bonhomme histoire de continuer à s'amuser (multiplie le temps par 5 mais bon...
PS : j'ai oublié, limité à 100 tronçons pour l'instant. Dire le max souhaité.
Merci à vous, c'est plus que je n'imaginais.
Je sens que je vais passer du temps ce week end pour comprendre ...
Bonsoir,
Voici un premier jet de ce que j'ai pu voir en le triturant dans tout les sens le fichier
Avantages
- On peut déplacer facilement le "labyrinthe" dans la zone graphique par copier coller et ça ne bug pas. Ce n'est pas le but mais imaginons que le labyrinthe dépasse les bords et la c'est la cata.
- on peut copier facilement une colonne et la réutiliser sur le schéma (dans un premier temps). la souplesse est bien sur cette partie
- Voir le petit bonhomme se déplacer est tout simplement excellent
- Exportation de toutes les données magnifiques
Evolution
- =- P renvoi souvent "Loop Until celDep = "P" SI on le bouge a auche u a droite ca bug
- la selection de deux cellules "nom" entraine un bug : "If Target.Count > 1 Or Target = "" Then Exit Sub
- Zone de saisie a agrandir Sur base format A3*2
- Tronçons à prévoir 5000
- Code a rajouter qui couperait un tronçon comme le fait le T (R de réduction pour "le chemin dans le labyrinthe se rétrécie pour le petit bonhomme" et CDR pour croix du style le jeu se corse 3 chemins a parcourir.
- Le petit bohomme doit il être obligé de prendre a droite? de base le petit bohomme ne va jamais tout droit, il préfère aller à gauche puis en revenant de son cul de sac,il repart et prend le premeier chemin disponible a gauche ou a droite ?est ce possible.
- Cas particulier d'un croisement: il va en premier lieu a gauche puis en revenant il va à droite revient et repart tout droit
A chaque passage le petit bonhomme laisse un caillou (N° tronçon). Est il possible Qu'à la fin,lorsqu'il fait ses comptes de cailloux il puisse ranger d'ans l'ordre ses cailloux départ et ses cailloux retours ?
Bon je vais plancher sur tout ça demain
Bonjour,
- =- P renvoi souvent "Loop Until celDep = "P" SI on le bouge a auche u a droite ca bug
le déplacement n'est prévu que vers la droite, la gauche, le haut ou le bas mais pas en diagonale !
- la selection de deux cellules "nom" entraine un bug : "If Target.Count > 1 Or Target = "" Then Exit Sub
pour cette raison, je prefère toujours individualiser les conditions :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.FormatConditions.Delete
If Target.Column <> 46 Then Exit Sub
If Target.Row = 1 Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
With Range(Range(Target.Offset(, 5)), Range(Target.Offset(, 6)))
.FormatConditions.Add Type:=xlExpression, Formula1:="=VRAI"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
End With
.FormatConditions(1).StopIfTrue = False
End With
End Sub- Zone de saisie a agrandir Sur base format A3*2
- Tronçons à prévoir 5000
Tu peux remarquer que le tableau est initialisé à 100 :
Dim tr(1 To 100) As troncaugmente la valeur !
- Code a rajouter qui couperait un tronçon comme le fait le T (R de réduction pour "le chemin dans le labyrinthe se rétrécie pour le petit bonhomme" et CDR pour croix du style le jeu se corse 3 chemins a parcourir.
Je n'en vois pas la nécessité car la réduction, si elle doit avoir lieu, se situe immédiatement après le té et c'est donc un nouveau réseau, il suffit de comparer le diamètre du réseau précédent au diamètre du réseau en cours pour savoir si il y a réduction.
Utiliser des croix en hydraulique génère des pertes de charge supplémentaires, il est préférable d'utiliser des tés l'un après l'autre
- Le petit bohomme doit il être obligé de prendre a droite? de base le petit bohomme ne va jamais tout droit, il préfère aller à gauche puis en revenant de son cul de sac,il repart et prend le premeier chemin disponible a gauche ou a droite ?est ce possible.
c'est ce qui permet de parcourir tout le réseau à coup sûr
- Cas particulier d'un croisement: il va en premier lieu a gauche puis en revenant il va à droite revient et repart tout droit
A chaque passage le petit bonhomme laisse un caillou (N° tronçon). Est il possible Qu'à la fin,lorsqu'il fait ses comptes de cailloux il puisse ranger d'ans l'ordre ses cailloux départ et ses cailloux retours ?
là, je ne comprend pas trop ? Si il va à gauche puis au retour il va à droite, il revient sur ses pas !
Eric va probablement mieux comprendre que moi, je lui laisse donc le soins de développer !
Bonjour à tous,
Houla, il y a de quoi lire.
Déjà, j'ai complété ma version pour sortir un tableau des branches et corriger certains bugs dont certains listés.
Par contre j'ai fait le choix de ne pas compter la cellule de départ, sinon la longueur des Tx et Cx sont comptabilisées 2 fois. Eventuellement je rajouter 1 pour P (départ et retour, ou revenir à l'ancienne méthode. Tu dis, .
Dans le tableau des branches une sélection d'un nom la met en surligné
Pour ce qui est des questions je vois que Theze, qui a l'air de connaitre la tuyauterie contrairement à moi, y a répondu pour une grande partie.
Je rappelle que la zone de graphique doit être entourée d'une zone vide. Plus facile que de rajouter une batterie de tests qui prendront du temps pour rien.
Et pas de diagonales comme l'a dit Theze.
- Zone de saisie a agrandir Sur base format A3*2
Pas bien compris, tu peux expliquer ?
- Code a rajouter qui couperait un tronçon comme le fait le T (R de réduction pour "le chemin dans le labyrinthe se rétrécie pour le petit bonhomme" et CDR pour croix du style le jeu se corse 3 chemins a parcourir.
- pour le R je vais attendre la fin du débat
- pour le CDR c'est envisageable, je verrais plus tard.
- Le petit bohomme doit il être obligé de prendre a droite? de base le petit bohomme ne va jamais tout droit, il préfère aller à gauche puis en revenant de son cul de sac,il repart et prend le premeier chemin disponible a gauche ou a droite ?est ce possible.
- Cas particulier d'un croisement: il va en premier lieu a gauche puis en revenant il va à droite revient et repart tout droit
A chaque passage le petit bonhomme laisse un caillou (N° tronçon). Est il possible Qu'à la fin,lorsqu'il fait ses comptes de cailloux il puisse ranger d'ans l'ordre ses cailloux départ et ses cailloux retours ?
Comme l'a confirmé theze le principe c'est de tourner toujours du même coté.
Imagine-toi au début d'un labyrinthe. Tu mets ta main sur un mur d'un coté et tu ne quittes plus ce mur de la main. Même les yeux bandés tu retourneras à la sortie en ayant parcouru toutes les branches.
Je viens d'ouvrir ton fichier.
- =- P renvoi souvent "Loop Until celDep = "P" SI on le bouge a auche u a droite ca bug
C'est dû au coude en D5.
Les coudes n'étaient pas prévus. Il ne sont pas traités, il faut que je vois.
Est-ce qu'un coude peut (ou doit à cause d'une perte de charge) être vu comme 2 tronçons ? Ca m'arrangerai...
Utiliser cette nouvelle version maintenant si tu continues des tests.
eric
edit : j'ai analysé un peu avec la nouvelle donne.
Tout en conservant le même algorithme il vaut mieux que je remette à plat une bonne partie du code maintenant que j'ai une vision plus complète du besoin.
Pour ça il me faut des plages de temps libre assez conséquentes, difficile de penser avancer avec 10 min par ci, 10 min par là.
Donc patiente un peu...
Theze a écrit :Bonjour,
- =- P renvoi souvent "Loop Until celDep = "P" SI on le bouge a auche u a droite ca bug
le déplacement n'est prévu que vers la droite, la gauche, le haut ou le bas mais pas en diagonale !
OK j'ai compris
eriiic a écrit :Tu peux remarquer que le tableau est initialisé à 100 :
CODE: TOUT SÉLECTIONNER
Dim tr(1 To 100) As tronc
augmente la valeur !
Ok
Theze a écrit :Code a rajouter qui couperait un tronçon comme le fait le T (R de réduction pour "le chemin dans le labyrinthe se rétrécie pour le petit bonhomme" et CDR pour croix du style le jeu se corse 3 chemins a parcourir.
Je n'en vois pas la nécessité car la réduction, si elle doit avoir lieu, se situe immédiatement après le té et c'est donc un nouveau réseau, il suffit de comparer le diamètre du réseau précédent au diamètre du réseau en cours pour savoir si il y a réduction.
Utiliser des croix en hydraulique génère des pertes de charge supplémentaires, il est préférable d'utiliser des tés l'un après l'autre
Concernant le R, il est plus pour dissocier un tronçon (un tuyau réduit ne se raccorde pas forcément au bout ou à partir d'un té, on peut le souder par exemple). Il y a une distinction c'est qu'il y a les pertes de charges linéaires (du à la vitesse débit imposé dans le tuyau ce que peut calculer et reconnaître le labyrinthe. A cela s'ajoute les pertes de charges singulières (coude accessoire vannes, obstacles, organes annexes... et j'en passe). Le labyrinthe sans trop se prendre la tête va reconnaître quelques pertes de charges singulières (notamment les coudes, les tés). Pour calculer des pertes de charges, il existe plusieurs méthodes :
- "a la rache" = X% de perte de charges singulières par rapport au linéaire > utile pour faire un premier jet afin de dégrossir le travail et par la suite de non plus de calculer les pertes de charge mais de les déduire.
- "précise" = on note tout. >impossible a complètement réaliser car difficulté d'accés, parties non visibles et le temps à relever ..... je serais à la retraite
- "mixte" = peu utilisé mais c'est celle que j'utilise, ce que je vois je le note et je l'intègre. il restera une part de non visible mais associé au X% modulé de pertes de charges singulières je vais pourvoir m'approcher par la méthode HARDY CROSS de la réalité du terrain.
Tous ce qui concerne les pertes de charges singulières (hormis celles déduite du labyrinthe) doivent être renseignées dans le formulaire. A mon sens , ne pas dissocier des tronçons avec changement de diamètre risque d'être problématique dans le calcul ? vous en pensez quoi ?
Concernant la croix, effectivement cela risque de poser problème (même si ça existe dans la réalité mais dans peu de cas). Il vaut mieux ajouter des tés et faire un décalage.
Theze a écrit :Le petit bohomme doit il être obligé de prendre a droite? de base le petit bohomme ne va jamais tout droit, il préfère aller à gauche puis en revenant de son cul de sac,il repart et prend le premeier chemin disponible a gauche ou a droite ?est ce possible.
c'est ce qui permet de parcourir tout le réseau à coup sûr
Je réagis sur mon côté utilisateur.La tendance va être de placer la pompe à gauche, le collecteur de gauche vers la droite et les branche vers le haut. Si le bonhomme cherche d’abord par la droite, il va commencer par en fait la dernière colonne pour revenir à la première. Après SI on peut ranger les données dans le bon sens le petit bonhomme peut emprunter la voie qu'il veut. 'c'est devenu un petit bonhomme avec les yeux bandés qui utilise sa main droite pour toucher le mur et utilise sa main gauche pour laisser les cailloux.
eriiic a écrit :Par contre j'ai fait le choix de ne pas compter la cellule de départ, sinon la longueur des Tx et Cx sont comptabilisées 2 fois. Eventuellement je rajouter 1 pour P (départ et retour, ou revenir à l'ancienne méthode. Tu dis, .
On peut laisser vide c'est bien comme ça. Le labyrinthe dégrossi par la méthode des carrés (grossièrement un carré = 1m) pour que ça reste a peu près en proportion de la réalité. Le labyrinthe est une aide cruciale sur le côté visuel (ou est le problème, identifie moi le tronçon). Dans la réalité ça ne fonctionne pas par pas de 1m; les longueurs sont différentes à chaque fois et je ne vois que le système de saisir la vrai valeur par l'intermédiaire d'un formulaire (longueur de 1 m à corriger ou case complémentaire pour saisir la vrai valeur). Dans tous les cas le vrai schéma se dessinera automatiquement en iso à partir des longueurs et des coordonées XY calculés pour (on n'en est pas encore là...)
eriiic a écrit :Dans le tableau des branches une sélection d'un nom la met en surligné
Je suis fan de ces systèmes qui sont complètement utile. A conserver.
eriiic a écrit :- Zone de saisie a agrandir Sur base format A3*2
Pas bien compris, tu peux expliquer ?
Je m'explique mal effectivement. Je crois que je n'ais jamais dépassé les 8000 tronçons (cela représente un grand bâtiment). il faut que je fasse un zone de saisie avec des carrés relativement petit mais qui permettent d'écrire les codes tout en conservant une zone dessin avec certaines limites. Sur la base d'un format A3 (espace papier comme limites) je pense que j'ai de quoi faire pour coder un réseau horizontal. Concernant les colonnes Le même principe mais ça pose moins de problème, on peu en dessiner quasiment plus de 500.
eriiic a écrit :e viens d'ouvrir ton fichier.
- =- P renvoi souvent "Loop Until celDep = "P" SI on le bouge a auche u a droite ca bug
C'est dû au coude en D5.
Les coudes n'étaient pas prévus. Il ne sont pas traités, il faut que je vois.
Est-ce qu'un coude peut (ou doit à cause d'une perte de charge) être vu comme 2 tronçons ? Ca m'arrangerai...
ça rejoins un peu la question avec le R (Réduction ou augmentation de diamètre). Imaginons la suite de tronçon suivant :
A----coude----B : 99,9% des cas que le diamètre entre A COUDE et COUDE B soit le même ce qui implique :
- débit = identique
- pertes de charges = PERTE LINEIQUE DE A/COUDE + PERTE SINGULIERE COUDE + PERTE LINEIQUE coude/B (le coude sera automatiquement pris en compte dans le formulaire récupéré sur le labyrinthe). ça ne pose pas de problème à mon sens.
deuxième cas toujours avec cette suite de tronçon A----coude----B mais en sectionnant en deux tronçons (c'est le coude qui alerte sur cette sectorisation) le résultat serra :
pour tronçon A-COUDE : débit x, perte de charge = perte linéique de A/COUDE
pour tonçon COUDE-B : débit toujours de X, perte de charge = perte singulière de coude + linéique de coude/B
PS j'ai raisonné en départ, pour le retour c'est l'inverse
Je n'ai pas l'impression que ça change quelque chose pour les calculs. Si c'est plus simple pour toi il vaut mieux faire ce qu'il est possible.
Heuu, j'ai l'impression que ça prend de grandes proportions.
La macro doit savoir où coller les données, si tu agrandis les zones elles vont se trouver bien loin...
Je te propose de les mettre dans un onglet dédié et d'afficher 2 vues.
Regarde si le principe te va (pas la peine de tester les macros, tout va planter).
Pour ce qui es du A3, de la taille des cellules et du zoom c'est toi qui gérera pour que ça rentre. Ca ne change rien au programme
eric
PS :
Je réagis sur mon côté utilisateur.La tendance va être de placer la pompe à gauche, le collecteur de gauche vers la droite et les branche vers le haut. Si le bonhomme cherche d’abord par la droite, il va commencer par en fait la dernière colonne pour revenir à la première. Après SI on peut ranger les données dans le bon sens le petit bonhomme peut emprunter la voie qu'il veut.
On peut couper le bras droit du petit bonhomme, il utilisera sa main gauche
Oui oui bien sur.
Ne t'inquiète pas je mettrais la forme qui faut. Il faut bien que je travaille moi aussi
Mais tu as passé combien de temps la dessus.
La vache . ça fait beaucoup de lignes de code .....
Franchement merci eriiic de faire fonctionner ce petit bonhomme avec ses deux bras. Quelque part tu simule ce que je fais au quotidien et le chemin du petit bonhomme je le fais plusieurs fois par jour dans tous les sens....
Je ne sais pas si tu te rends compte mais tu es en train de coder le départ des équations des grands ingénieurs de l'époque Hardy Cross, Darcy Weisbach Hazen William Colebrook....
L'affichage sur deux feuilles est ce qu'il faut. De toute façon je ne me trimbale pas avec un 150 pouces dans les caves et vides sanitaires....
On ne voit plus le petit bonhomme mais je suppose que c'est du au changement de feuille ?
Comment on fait je travaille dessus et je te renvoi ce que ça fait ?
Bonjour,
non, je t'avais dit que c'était juste pour visualiser, que les macros planteraient sur cette version.
Maintenant je vais reprendre tout le code, attend que j'ai eu le temps.
eric