[VBA - Excel] Élaboration d'une macro

Bonjour.

J'ai fait une demande le 2 novembre 2016 réalisé avec succès par MFerrand :

> https://forum.excel-pratique.com/excel/aide-concernant-une-macro-t84636.html

Je remercie énormément MFerrand pour avoir fait ma demande.

Aujourd'hui, je reviens vers vous car j'ai des nouvelles choses à effectuer sur ma demande.

Le but globale de ma macro sera de :

- Ajouter une nouvelle machine.

Pour cela, si la machine situé sur le fichier d'extraction "WBX - extraction pure" ne se trouve pas dans le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013", alors on ajoute toutes les lignes possible dans le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013".

- Supprimer une machine.

Pour cela, si la machine situé sur le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013" n'existe pas dans le fichier d'extraction "WBX - extraction pure", alors on supprime toute la ligne de la machine dans le fichier original ""WBX-CTR-ANX-2-Périmètre-v6 20161013".

- Mettre à jour les valeurs de la vCPU, RAM(Go), Stockage.

Pour cela, il faut mettre à jour les valeurs de la vCPU, RAM(Go), Stockage du fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013" en les remplaçant par les valeurs du Processeur, Mémoire, Capacité* situé dans le fichier d'extraction "WBX - extraction pure".

En résumé :

vCPU = Processeur.

Ram(Go) = Mémoire.

Stockage = Capacité*.

- Rajouter la colonne ESX et Liste Datastore qui se situe dans le fichier d'extraction "WBX - extraction pure" dans le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013".

Pour cela, il faut ajouter 2 nouvelles colonnes dans le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013".

- Ajouter le type d’environnement en se basant sur le nom de la machine.

Par exemple :

WBX-REC-DOCKER => RECETTE

WBX-PRD-SEPA => Production

WBX-PP-WEB01 => Préproduction

J'ai élaboré un code qui marche uniquement si ESX et Liste Datastore se trouve dans mon fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013" :

Sub test()

    Dim iLig As Integer
    Dim iDerLig As Integer

    iDerLig = Range("C" & Rows.Count).End(xlUp).Row

    For iLig = 1 To iDerLig
        If InStr(1, Range("C" & iLig).Value, "-REC-") > 0 Then
            Range("E" & iLig).Value = "Recette"
        ElseIf InStr(1, Range("C" & iLig).Value, "-PP-") > 0 Then
            Range("E" & iLig).Value = "Pré-Production"
        ElseIf InStr(1, Range("C" & iLig).Value, "-PRD-") > 0 Then
            Range("E" & iLig).Value = "Production"
        ElseIf InStr(1, Range("C" & iLig).Value, "-prd-") > 0 Then
            Range("E" & iLig).Value = "Production"
        End If
    Next iLig
End Sub

Le problème est que je n'arrive pas à mettre ESX et Liste Datastore dans mon fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013" grâce à une macro.

- Ajouter le type de stockage en se basant sur le nom dans "Liste Datastore" :

Pour cela, il faut faire 2 nouvelles colonnes : LIVE et MASS. On peut le faire à la main. Pas besoin d'une macro pour ajouter les 2 nouvelles colonnes. Il faut une macro par contre pour les compléter.

Tout ce qui comporte « ms » dans le nom renseigner OK dans la colonne MASS et NOK dans le LIVE.

Et inversement tout ce qui ne comporte pas le mot « ms » mettre OK dans la colonne LIVE et NOK dans MASS.

J'ai élaboré un code :

Sub test()

    Dim iLig As Integer
    Dim iDerLig As Integer

    iDerLig = Range("P" & Rows.Count).End(xlUp).Row

    For iLig = 1 To iDerLig
        If InStr(1, Range("P" & iLig).Value, "-ms-") > 0 Then
            Range("N" & iLig).Value = "OK"
        Else
            Range("N" & iLig).Value = "NOK"
        End If
        If InStr(1, Range("P" & iLig).Value, "-ms-") > 0 Then
            Range("O" & iLig).Value = "NOK"
        Else
            Range("O" & iLig).Value = "OK"
        End If
    Next iLig
End Sub

Même problème que pour le type d'environnement.

Voilà.

Pour le moment, j'ai un code grâce à MFerrand qui ajoute une nouvelle machine et qui met à jour les valeurs de la vCPU, Ram(GO), Stockage.

Le voilà :

Sub MiseAJour()
    Dim d As Object, Tablo(), TabSupp(), pmc, mach, ln%, i%, k%
    Set d = CreateObject("Scripting.Dictionary")
    d.CompareMode = vbTextCompare
    On Error GoTo noclasseur
    With Workbooks("WBX - extraction pure.xlsx").Worksheets(1)
        On Error GoTo 0
        ln = .Cells(.Rows.Count, 10).End(xlUp).Row
        If .Cells(ln, 10) Like "Sum*" Then ln = ln - 1
        For i = 2 To ln
            mach = Trim(.Cells(i, 10)): k = InStr(1, mach, "(")
            If k > 0 Then mach = Trim(Left(mach, k - 1))
            pmc = .Cells(i, 19) & ";" & .Cells(i, 20) & ";" & .Cells(i, 21) 
            d(mach) = pmc
        Next i
    End With
    Workbooks("WBX - extraction pure.xlsx").Close False
    With ThisWorkbook.Worksheets("Inventaire 060616")
        ln = .Cells(.Rows.Count, 3).End(xlUp).Row
        ReDim Tablo(3 To ln, 2)
        For i = 3 To ln
            mach = .Cells(i, 3)
            If d.exists(mach) Then
                pmc = Split(d(mach), ";")
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
                d.Remove (mach)
            End If
        Next i
        Application.ScreenUpdating = False
        .Range("I3:K" & ln).Value = Tablo
        If d.Count > 0 Then
            ReDim Tablo(1 To d.Count, 2): i = 0
            For Each mach In d.keys
                i = i + 1: pmc = Split(d(mach), ";")
                .Cells(ln + i, 3) = mach
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
            Next mach
            .Range("I" & ln + 1 & ":K" & ln + i).Value = Tablo
        End If
    End With
    Exit Sub
noclasseur:
    MsgBox "Classeur d'extraction non trouvé." & Chr(10) & "Vérifier.", vbCritical, "Erreur"
End Sub    

Si possible, le but est de modifier le code pour ajouter les autres conditions citées plus haut.

Après, si ce n'est pas possible, on peut créer plusieurs macros.

Pour plus de simplicité, je vais mettre en pièce jointe mes 2 fichiers excel.

PS : Désolé pour la longueur du message mais je voulais être clair dans mes explications.

Si vous avez des questions, n'hésitez pas.

Merci à tous !

Bonjour

Je peux relancer ma demande au bout de combien de temps ?

Je n'ai pas vu de réponse dans le règlement ...

Bref, je relance ma demande si cela possible.

J'aimerais au minimum que la suppression des machines marchent. J'ai essayé de le coder, mais je n'y arrive pas pour le moment

Bonjour,

En passant vite (pas le temps ce matin...) [mais ça m'accroche pour avoir les signalisations de messages ultérieurs !]

Ayant toujours un raccourci vers ton fichier sur le bureau, c'est soit oubli de le supprimer, soit quelque chose restait à faire...

Sauf erreur je crois que la procédure déjà réalisée que tu cites répond à ces 3 questions. C'est ce qu'elle fait et la question qui était alors : est-ce que c'est ce qu'elle doit faire paraît donc réglée. Sauf peut-être un élément qui est que pour la machine ajoutées on ne met à jour que les 3 colonnes concernées : les autres étant vides, elles le restent ! Cet aspect ne me paraît donc toujours pas réglé.

Les 3 autres questions ont 2 aspects : l'ajout de nouvelles colonnes + ajouter des infos = opérations ponctuelles, qui ne se font qu'une fois (on traite donc à part) ; ce qui doit par la suite s'incorporer aux mises à jour = il faut compléter alors la macro de mise à jour.

A confirmer. Cordialement.

Bonjour !

MFerrand a écrit :

Sauf erreur je crois que la procédure déjà réalisée que tu cites répond à ces 3 questions. C'est ce qu'elle fait et la question qui était alors : est-ce que c'est ce qu'elle doit faire paraît donc réglée. Sauf peut-être un élément qui est que pour la machine ajoutées on ne met à jour que les 3 colonnes concernées : les autres étant vides, elles le restent ! Cet aspect ne me paraît donc toujours pas réglé.

Non, la suppression ne se fait pas puisque les 2 fichiers ne contiennent pas exactement le même nombre de machine.

En effet, après réalisation de la macro, le fichier d'extraction contient 160 machines alors que le fichier original contient 176 machines.

C'est pourquoi, j'aimerai ajouter dans la macro, la suppression des machines.

MFerrand a écrit :

Les 3 autres questions ont 2 aspects : l'ajout de nouvelles colonnes + ajouter des infos = opérations ponctuelles, qui ne se font qu'une fois (on traite donc à part) ; ce qui doit par la suite s'incorporer aux mises à jour = il faut compléter alors la macro de mise à jour.

Pour le code "ajouter des infos", je pense que le mien est bon ?

C'est super le fait qu'on peut incorporer toutes les conditions dans la macro mise à jour.

Bonne journée.

Cordialement.

Non, la suppression ne se fait pas puisque les 2 fichiers ne contiennent pas exactement le même nombre de machine.

En effet, modification à opérer :

    With ThisWorkbook.Worksheets("Inventaire 060616")
        ln = .Cells(.Rows.Count, 3).End(xlUp).Row
        ReDim Tablo(3 To ln, 2)
        For i =ln To 3 Step -1
            mach = .Cells(i, 3)
            If d.exists(mach) Then
                pmc = Split(d(mach), ";")
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
                d.Remove (mach)
            Else
                .Rows(i).Delete
            End If
        Next i

(surlignées) : lors de la mise à jour, on inverse le déroulement de la boucle pour pouvoir supprimer la ligne le cas échéant, si une machine ne figure plus dans l'extraction, on la supprime.

Cordialement.

Merci beaucoup pour le code. C'est parfait.

Seul petit problème, cela ne supprime pas complètement la ligne. En effet, toute la ligne se supprime sauf les valeur de la VCPU, de la Ram et du Stockage.

Voici le rendu en image :

captur10

Est-ce possible de régler ce problème ?

Merci.

Cordialement.

Comment obtiens-tu ça !

Si une ligne est supprimée, elle est supprimée... en entier ! Pas à moitié !

Je suis désolé mais moi je vois ce résultat, je ne suis pas fou quand même

Voilà le code complet :

Sub MiseAJour()
    Dim d As Object, Tablo(), TabSupp(), pmc, mach, ln%, i%, k%
    Set d = CreateObject("Scripting.Dictionary")
    d.CompareMode = vbTextCompare
    On Error GoTo noclasseur
    With Workbooks("WBX - extraction pure.xlsx").Worksheets(1)
        On Error GoTo 0
        ln = .Cells(.Rows.Count, 10).End(xlUp).Row
        If .Cells(ln, 10) Like "Sum*" Then ln = ln - 1
        For i = 2 To ln
            mach = Trim(.Cells(i, 10)): k = InStr(1, mach, "(")
            If k > 0 Then mach = Trim(Left(mach, k - 1))
            pmc = .Cells(i, 19) & ";" & .Cells(i, 20) & ";" & .Cells(i, 21)
            d(mach) = pmc
        Next i
    End With
    Workbooks("WBX - extraction pure.xlsx").Close False
    With ThisWorkbook.Worksheets("Inventaire 060616")
        ln = .Cells(.Rows.Count, 3).End(xlUp).Row
        ReDim Tablo(3 To ln, 2)
        For i = ln To 3 Step -1
            mach = .Cells(i, 3)
            If d.exists(mach) Then
                pmc = Split(d(mach), ";")
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
                d.Remove (mach)
             Else
                .Rows(i).Delete
            End If
        Next i
        Application.ScreenUpdating = False
        .Range("I3:K" & ln).Value = Tablo
        If d.Count > 0 Then
            ReDim Tablo(1 To d.Count, 2): i = 0
            For Each mach In d.keys
                i = i + 1: pmc = Split(d(mach), ";")
                .Cells(ln + i, 3) = mach
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
            Next mach
            .Range("I" & ln + 1 & ":K" & ln + i).Value = Tablo
        End If
    End With
    Exit Sub
noclasseur:
    MsgBox "Classeur d'extraction non trouvé." & Chr(10) & "Vérifier.", vbCritical, "Erreur"
End Sub

Ainsi que les 2 documents (voir en bas).

Je me suis peut être trompé quelque part

Merci.

Cordialement.

Bonjour,

Il ne s'agit de restes des lignes supprimées... En supprimant dans la boucle, je n'ai pas tenu compte du prédimensionnement du tableau, ce sont des mises à jour qui ne se retrouvent plus à leur place mais sur l'ancienne ligne où elles auraient dû être.

Je rectifie ça...


Voilà qui me paraît rétabli !

Cordialement.

Bonjour.

Merci, c'est parfait, ça marche

Les trois premières conditions sont faite. Est-ce possible de faire les autres s'il vous plait ?

Cordialement.

Bonjour.

Après, c'est surtout cette condition qu'il faut faire :

Rajouter la colonne ESX et Liste Datastore qui se situe dans le fichier d'extraction "WBX - extraction pure" dans le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013".

Les deux autres, je pense pouvoir me débrouiller

Merci.

Bonjour,

Si je me souviens bien, il y a deux choses :

- si les nouvelles colonnes existent dans le fichier source à partir duquel on met à jour, il faut les introduire dans le fichier cible, hors procédure de mise à jour ;

- si les nouvelles colonnes doivent être intégrées aux mises à jour, il faut les ajouter dans les mises à jour (savoir où elles sont pour le faire) ; il faut aussi vérifier que cela ne modifie pas la position des colonnes antérieurement mises à jour.

Le plus simple serait donc, après introduction des nouvelles colonnes :

relister les positions des colonnes à mettre à jour dans la source et dans la cible.

Cordialement.

Bonjour.

MFerrand a écrit :

Si je me souviens bien, il y a deux choses :

- si les nouvelles colonnes existent dans le fichier source à partir duquel on met à jour, il faut les introduire dans le fichier cible, hors procédure de mise à jour ;

- si les nouvelles colonnes doivent être intégrées aux mises à jour, il faut les ajouter dans les mises à jour (savoir où elles sont pour le faire) ; il faut aussi vérifier que cela ne modifie pas la position des colonnes antérieurement mises à jour.

Le plus simple serait donc, après introduction des nouvelles colonnes :

relister les positions des colonnes à mettre à jour dans la source et dans la cible.

J'avoue ne pas avoir tout bien compris

Mais, si tu veux le faire comme ça, pourquoi pas du moment que ça importe bien les 2 colonnes aux bonnes machines

Mais, pour résumé la chose, le but est de mettre les 2 colonnes ESX et Liste Datastore qui se situe respectivement à la colonne W et X dans le fichier "WBX-CTR-ANX-2-Périmètre-v6 20161013". Il faudrait les mettres après la colonne IP, c'est à dire dans les colonnes I et O.

Pour trouver la bonne colonne, il faudra donc s'aider du nom de la machine.

Un peu comme nous l'avons fait pour la vCPU, la Ram(Go) et le Stockage.

J'ai essayé de le faire mais il m'indique une incompatibilité de type. C'est sûrement du au fait que les valeurs sont des INT alors que les 2 colonnes que je veux importer sont des STRING.

Merci d'avance pour votre aide

Cordialement.

Bonjour,

Juste pour vous dire que cette condition :

- Ajouter le type d’environnement en se basant sur le nom de la machine.

Je viens de la finir. Elle marche très bien.

Voici le code complet qui :

  • Ajoute une machine
  • Supprime une machine
  • Met à jour les valeurs de la vCPU, de la Ram et du Stockage
  • Met à jour le type de l'environnement
Sub MiseAJour()
    Dim iLig As Integer
    Dim iDerLig As Integer
    Dim d As Object, Tablo(), TabSupp(), pmc, mach, ln%, i%, k%
    Set d = CreateObject("Scripting.Dictionary")
    d.CompareMode = vbTextCompare
    On Error GoTo noclasseur
    With Workbooks("WBX - extraction pure.xlsx").Worksheets(1)
        On Error GoTo 0
        ln = .Cells(.Rows.Count, 10).End(xlUp).Row
        If .Cells(ln, 10) Like "Sum*" Then ln = ln - 1
        For i = 2 To ln
            mach = Trim(.Cells(i, 10)): k = InStr(1, mach, "(")
            If k > 0 Then mach = Trim(Left(mach, k - 1))
            pmc = .Cells(i, 19) & ";" & .Cells(i, 20) & ";" & .Cells(i, 21)
            d(mach) = pmc
        Next i
    End With
    Workbooks("WBX - extraction pure.xlsx").Close False
    With ThisWorkbook.Worksheets("Inventaire 060616")
        ln = .Cells(.Rows.Count, 3).End(xlUp).Row
        ReDim Tablo(3 To ln, 2)
        For i = 3 To ln
            mach = .Cells(i, 3)
            If d.exists(mach) Then
                pmc = Split(d(mach), ";")
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
                d.Remove (mach)
            End If
        Next i
        Application.ScreenUpdating = False
        With .Range("I3:K" & ln)
            .Value = Tablo
            .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        End With
        ln = .Cells(.Rows.Count, 3).End(xlUp).Row
        If d.Count > 0 Then
            ReDim Tablo(1 To d.Count, 2): i = 0
            For Each mach In d.keys
                i = i + 1: pmc = Split(d(mach), ";")
                .Cells(ln + i, 3) = mach
                For k = 0 To 2
                    Tablo(i, k) = CLng(pmc(k))
                Next k
            Next mach
            .Range("I" & ln + 1 & ":K" & ln + i).Value = Tablo 
        End If
    End With
    With Range("A:P")
    .HorizontalAlignment = xlHAlignCenter 
    .VerticalAlignment = xlVAlignCenter 
    End With
    iDerLig = Range("C" & Rows.Count).End(xlUp).Row   
    For iLig = 1 To iDerLig
        If InStr(1, Range("C" & iLig).Value, "-REC-") > 0 Then
            Range("E" & iLig).Value = "Recette"
        ElseIf InStr(1, Range("C" & iLig).Value, "-PP-") > 0 Then
            Range("E" & iLig).Value = "Pré-Production"
        ElseIf InStr(1, Range("C" & iLig).Value, "-PRD-") > 0 Then
            Range("E" & iLig).Value = "Production"
        ElseIf InStr(1, Range("C" & iLig).Value, "-prd-") > 0 Then
            Range("E" & iLig).Value = "Production"
        End If
    Next iLig
    Exit Sub
noclasseur:
    MsgBox "Classeur d'extraction non trouvé." & Chr(10) & "Vérifier.", vbCritical, "Erreur"
End Sub

Reste donc à faire :

- Rajouter la colonne ESX et Liste Datastore qui se situe dans le fichier d'extraction "WBX - extraction pure" dans le fichier original "WBX-CTR-ANX-2-Périmètre-v6 20161013".

- Ajouter le type de stockage en se basant sur le nom dans "Liste Datastore".

Comme dit précédemment, je pense réussir à ajouter le type de stockage.

Par contre, pour ajouter les 2 colonnes ESX et Liste Datastore, j'y arrive vraiment pas et j'aurai besoin d'aide.

Merci.

Cordialement.

Bonjour,

Jusqu'ici, je ne me suis occupé que de la mise à jour concernant 3 colonnes, ce entraînement éventuellement ajouts ou suppressions de machines, mais les ajouts ne comportant que les valeurs mises à jour.

Environnement ? Pas vu de quoi il retournait !

J'ai demandé où se situaient les nouvelles colonnes : W et X dans la source.

Pour la cible, c'est nébuleux :

Il faudrait les mettres après la colonne IP, c'est à dire dans les colonnes I et O.

Après IP vient IQ puis IR Mais je ne me souviens pas qu'on allait si loin.

Si c'est I, il me semble que cela modifie les colonnes antérieures. Il faudrait donc récapituler...

Mais si tu as bouclé, c'est donc que l'affaire est close !

Bonjour,

MFerrand a écrit :

Jusqu'ici, je ne me suis occupé que de la mise à jour concernant 3 colonnes, ce entraînement éventuellement ajouts ou suppressions de machines, mais les ajouts ne comportant que les valeurs mises à jour.

Exact, merci

MFerrand a écrit :

Environnement ? Pas vu de quoi il retournait !

C'est le type d'environnement. Je l'ai indiqué dans le premier poste de mon sujet.

MFerrand a écrit :

J'ai demandé où se situaient les nouvelles colonnes : W et X dans la source.

La colonne W = ESX

La colonne X = Liste Datastore

MFerrand a écrit :

Après IP vient IQ puis IR .

IP, c'est le nom de la colonne M.

Et faudrait rajouter les 2 colonnes après. C'est à dire dans la colonne N et O.

Les 2 colonnes (N et O) sont vide pour le moment ...

MFerrand a écrit :

Mais si tu as bouclé, c'est donc que l'affaire est close !

Bah non, c'est pas bouclé. Les 2 colonnes ESX et Liste Datastore du fichier d'extraction ne sont pas dans le fichier original.

J'ai l'impression qu'on a du mal à se comprendre. Je suis désolé si je ne suis pas très clair dans mes propos.

Cordialement.

Les colonnes manquantes, il faut les mettre : c'est indépendant de la mise à jour.

Ce sont les conditions de mise à jour qui se modifient.

En fonction de la modification, on révise ou réadapte la procédure de mise à jour.

Je n'ai jamais dit autre chose

Pour être bien clair : la modification du fichier ne relève d'aucune procédure, c'est un évènement qui se traduit par une modification manuelle !

C'est cette modification qui rend ensuite nécessaire de revoir la procédure de mise à jour, dans la nouvelle configuration créée.

D'accord, je vois.

Mais manuellement, ça va être un peu long car les noms de machines ne sont pas dans l'ordre dans les 2 fichiers.

Il faut donc trouver la bonne ligne pour remplir la colonne et ainsi de suite.

Il y a sûrement un moyen pour faire cela automatiquement ?

Ça reste quand même identique à la modification des valeurs de la vCPU, Ram et Stockage sauf qu'il n'y a pas encore de valeur ...

Après au pire, on peut faire une nouvelle macro pour faire cette procédure ...

Mais manuellement, ça va être un peu long

On parle manuellement d'ajouter 2 colonnes ! C'est quelques secondes !

Le contenu relève de la mise à jour ! Ou alors quelque chose m'échappe !

MFerrand a écrit :

On parle manuellement d'ajouter 2 colonnes ! C'est quelques secondes !

Le contenu relève de la mise à jour ! Ou alors quelque chose m'échappe !

Oui, on ne se comprend pas, je pense

Bon, je vais essayer d'expliquer étape par étape.

J'ouvre mon fichier d'extraction, à savoir le fichier "WBX - extraction pure"

Sur ce fichier, je veux prendre mes 2 colonnes ESX et Liste Datastore.

Et, je veux les mettre dans mon fichier original, à savoir le fichier "WBX-CTR-ANX-2-Périmètre-v6 20161013".

Mais, ça ne va pas être simple. En effet, je dois me référer à cette colonne dans mon fichier "WBX-CTR-ANX-2-Périmètre-v6 20161013".

Et à cette colonne dans mon fichier "WBX - extraction pure".

Pour pouvoir trouver la bonne ligne et mettre mon ESX et ma Liste Datastore.

Car, les machines ne sont pas dans le même ordre dans les 2 fichiers.

C'est pour cela que je dis que ça ressemble fortement à la mise à jour des valeurs de la vCPU/Ram/Stockage.

J'aimerais donc que cela m'insère automatiquement mon ESX et ma Liste Datastore à la bonne ligne dans mon fichier "WBX-CTR-ANX-2-Périmètre-v6 20161013"

Est-ce plus clair ?

Rechercher des sujets similaires à "vba elaboration macro"