Bonjour

Je recherche de l'aide pour une Macro VBA.
Je suis actuellement en auto-formation vba depuis 2 jours ( je suis donc débutant ), et je me suis donné comme challenge de créer une table de vérité.

le fonctionnement :
- On rentre le nombre de vecteur d'entré et celui des sorties
- On rentre dans un tableau le nom des vecteurs d'entrées et le nom des vecteurs de sorties
( Je suis à ce niveau là du programme )

(Résultat)

Vecteur_E1 Vecteur_E2 Vecteur_S1
0 0 VIDE
0 1 VIDE
1 0 VIDE
1 1 VIDE

Ce que je recherche actuellement c'est une manière de créer des conditions directement sur la page excel pour que ça me renvoie le résultat de la sortie.
(exemple : Vecteur_E1 & Vecteur_E2 -> Vecteur_S1 = True / Vecteur_E1 Or Vecteur_E2 -> Vecteur_S1 = True

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Sub GenerationTableVerite()
 
' rentrer le nombre de var e en B3, le nombre var s D3, les noms var e en B6 -> B22, les noms var s en D6 -> D22
 
    ' Indice par défaut
    Dim i As Long
    ' nombre de variable en sortie ( b3 )
    Dim MaxVarETab As Long
    ' Indice qui gère le nombre de variable en sortie ( d3 )
    Dim MaxVarSTab As Long
    '
    Dim iLesLignes As Long
    '
    Dim iUneLigne As Long
    '
    Dim VarE As Long
    '
    Dim iDepart As Long
    ' Indice de début de génération des variables de sortie, elles suivent la fin de génération des variables d'entrées
    Dim DebutVarS As String
    '
    Dim iEtat As String
 
    MaxVarETab = Range("B3").Cells.Value
 
    MaxVarSTab = Range("D3").Cells.Value
 
    ' Suppression lignes
    Range("F2", Range("Z2").End(xlDown)).Rows.Clear
 
    ' bloque l'affichage
    Application.ScreenUpdating = False
 
    Range("F2").Cells.Value = Range("B6").Cells.Value
 
    ' Récupère le noms des variables entrantes du tableau de la colonne B et les écrits
    For j = 0 To MaxVarETab - 2
        Range("G2").End(xlToLeft).Offset(0, 1 + j).Cells.Value = Range("B" & 7 + j, "B22").Cells.Value
    Next
 
    ' Gère ecriture varS
    If MaxVarETab = 1 Then
            DebutVarS = "G2"
            End If
        If MaxVarETab = 2 Then
            DebutVarS = "G2"
            End If
        If MaxVarETab = 3 Then
            DebutVarS = "H2"
            End If
        If MaxVarETab = 4 Then
            DebutVarS = "I2"
            End If
        If MaxVarETab = 5 Then
            DebutVarS = "J2"
            End If
        If MaxVarETab = 6 Then
            DebutVarS = "K2"
            End If
        If MaxVarETab = 7 Then
            DebutVarS = "L2"
            End If
        If MaxVarETab = 8 Then
            DebutVarS = "M2"
            End If
        If MaxVarETab = 9 Then
            DebutVarS = "N2"
            End If
        If MaxVarETab = 10 Then
            DebutVarS = "O2"
            End If
        If MaxVarETab = 11 Then
            DebutVarS = "P2"
            End If
        If MaxVarETab = 12 Then
            DebutVarS = "Q2"
            End If
        If MaxVarETab = 13 Then
            DebutVarS = "R2"
            End If
        If MaxVarETab = 14 Then
            DebutVarS = "S2"
            End If
        If MaxVarETab = 15 Then
            DebutVarS = "T2"
            End If
        If MaxVarETab = 16 Then
            DebutVarS = "U2"
            End If
        If MaxVarETab = 17 Then
            DebutVarS = "V2"
            End If
 
    ' Récupère le noms des variables de sortie du tableau de la colonne L
    For j = 0 To MaxVarSTab - 1
        Range(DebutVarS).End(xlToLeft).Offset(0, MaxVarETab + j).Cells.Value = Range("D" & 6 + j, "D22").Cells.Value
    Next
 
    ' Sortie procédure si le nombre de variable d'entrée vaut 0
    If MaxVarETab = 0 Then Exit Sub
 
    ' Indice de départ du tableau de Karnaugh
    iDepart = MaxVarETab + 5
    ' Nombre total de ligne du tableau selon les variables d'entrées
    iLesLignes = (2 ^ MaxVarETab) - 1
    ' Nombre total de variable d'entrée
    MaxVarETab = MaxVarETab - 1
 
    ' Boucle de parcours des lignes selon le nombre total de 2 ^ variables entrées
    For iUneLigne = 0 To iLesLignes
        ' Boucle de génération des 0 et des 1 selon le nombre de variable d'entrée
        For VarE = 0 To MaxVarETab
            If (iUneLigne And (2 ^ VarE)) > 0 Then
                iEtat = "1"
            Else
                iEtat = "0"
            End If
            ' écriture des 0 et des 1
            Feuil1.Cells(iUneLigne + 2 + 1, iDepart - VarE) = iEtat
        Next VarE
    Next iUneLigne
 
    ' Modification du style d'écriture
    With Range("F3", "Z900000")
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
    End With
 
    ' active l'affichage
    Application.ScreenUpdating = True
 
    ' Message box indiquant si ça s'est bien passé
    MsgBox "Génération terminée"
 
End Sub
Auriez-vous des indications sur ce sujet ?

J'espère avoir été clair, et je reste présent dès que je le peux pour répondre.
Je vais continuer de chercher de mon coté.

Merci d'avance.