Calvus
XLDnaute Barbatruc
Bonsoir le Forum,
Un problème qui devient insoluble, et pourtant je ne dois pas être loin de la solution.
Si on inscrit 2 en K34 par exemple, Jean va s'inscrire dans ladite cellule.
J'avais un code avec For each cel....etc, mais la durée d'éxécution était de 2 minutes.
J'ai avantageusement remplacé ce code par 2 tableaux (tablo et tablo2), et fait mes boucles dessus.
Tout ça fonctionne correctement.
Ce qui "pêche", c'est que mon code précédant coloriait les cellules en fonction de la valeur obtenue, ce que je ne parviens plus à faire avec mes tableaux VBA.
Comment faire donc pour colorer les cellules ? (Exemple de couleur sur la droite de la feuille)
Je viens de m'apercevoir en faisant l'exemple, qu'en plus mon tableau déborde.... !
En effet, les cellules se décalent, ce que j'ai compris, et pense même savoir pourquoi, mais ce que j'aimerais savoir, c'est pourquoi elle provoque un bug si elle est insérée dans le reste du code.
Vous me répondrez probablement qu'on ne peut pas affecter une couleur à une variable..
En espérant que ce soit assez clair.
Merci de votre aide.
Un problème qui devient insoluble, et pourtant je ne dois pas être loin de la solution.
- J'ai un fichier avec un tableau (I7:AF57) se remplissant en fonction de la saisie d'un chiffre de 1 à 10 correspondant à l'autre tableau sur la feuille (B29: D39).
Si on inscrit 2 en K34 par exemple, Jean va s'inscrire dans ladite cellule.
J'avais un code avec For each cel....etc, mais la durée d'éxécution était de 2 minutes.
J'ai avantageusement remplacé ce code par 2 tableaux (tablo et tablo2), et fait mes boucles dessus.
Tout ça fonctionne correctement.
Ce qui "pêche", c'est que mon code précédant coloriait les cellules en fonction de la valeur obtenue, ce que je ne parviens plus à faire avec mes tableaux VBA.
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Single, j As Single, k As Single, cel As Range
Dim tablo(10, 2), tablo2(51, 32)
If Not Application.Intersect(Target, Range("I7:AF57")) Is Nothing Then
'Alimente le 1er tableau des prénoms
For i = 1 To 10
tablo(i, 1) = Range("B" & i + 29)
tablo(i, 2) = Range("C" & i + 29)
Next
'Enregistrement des valeurs du tableau existant
Range("I7:AF57").Interior.ColorIndex = 2
For j = 7 To 57
For k = 9 To 32
tablo2(j - 7, k - 9) = Cells(j, k)
Next k
Next j
'Incrémentation des nouvelles valeurs
For i = 0 To 50
For j = 0 To 24
For k = 1 To 10
If tablo2(i, j) = tablo(k, 1) Then
tablo2(i, j) = tablo(k, 2)
'If tablo2(i, j) = tablo(k, 2) Then
'Cells(tablo2(i, j), tablo2(i, j)).Offset(6, 8).Interior.ColorIndex = 43
'End If
End If
Next
Next
Next
Range("I7").Resize(UBound(tablo2, 1), UBound(tablo2, 2)) = tablo2
End If 'intersect
End Sub
Comment faire donc pour colorer les cellules ? (Exemple de couleur sur la droite de la feuille)
Je viens de m'apercevoir en faisant l'exemple, qu'en plus mon tableau déborde.... !
- De plus, j'ai une instruction qui fonctionnait, même si c'était de manière imparfaite :
VB:
'If tablo2(i, j) = tablo(k, 2) Then
'Cells(tablo2(i, j), tablo2(i, j)).Offset(6, 8).Interior.ColorIndex = 43
'End If
En effet, les cellules se décalent, ce que j'ai compris, et pense même savoir pourquoi, mais ce que j'aimerais savoir, c'est pourquoi elle provoque un bug si elle est insérée dans le reste du code.
Vous me répondrez probablement qu'on ne peut pas affecter une couleur à une variable..
En espérant que ce soit assez clair.
Merci de votre aide.