Re,
Pour accélérer un peu, tu peux ajouter
au début du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.Screenupdating=false
et
à la fin
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.Screenupdating=true
Sinon, est-ce que tu peux m'expliquer à quoi ça sert ?
oui, dans le code (double-clic) de Thisworkbook, après les feuillesque veux tu dire par : dans Thisworkbook? le module?
Ce principe est pour but d'effectuer des modifications et pouvoir les repérer facilement puis repérer ensuite les même valeur dans d'autres cellule pour des calculs spécifique. avec un plus de faire ça sur plusieurs feuilles pour réduire le délai du traitement j'espère que j'ai pu répondre à ta question .
je vais tester et si ça fonctionne je met résolu au sujet ?
Re,
oui, tu mets Resolu quand tu veux
Petite remarque : si on modifie 2 cellules en y mettant la même valeur, seule la dernière sera bleue
Re,
On pourrait ne mettre du jaune que si ça n'est pas bleu
Il y a un soucis aussi si tu sélectionne plusieurs cellules, et que tu les efface (suppr) par exemple
Re,
ouiUne condition ?
Le mieux aurait été d'essayer... ça plantec'est à dire ?
Re,
Pour la condition
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 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim Valeur, Tablo, Plage As Range, i As Long, j As Long Application.ScreenUpdating = False Valeur = Target.Value Set Plage = Sh.Range("F1:DP10000") 'Plage.Interior.ColorIndex = xlNone Tablo = Plage.Value For i = 1 To UBound(Tablo, 1) For j = 1 To UBound(Tablo, 2) If CStr(Tablo(i, j)) = CStr(Valeur) Then If Plage.Cells(i, j).Interior.Color <> RGB(0, 0, 255) Then Plage.Cells(i, j).Interior.Color = RGB(255, 255, 0) End If End If Next j Next i Target.Interior.Color = RGB(0, 0, 255) Erase Tablo Set Plage = Nothing Application.ScreenUpdating = True End Sub
Re Bonjour,
Aujourd'hui en gros le principe est le suivant : Si une valeur d'une cellule est modifiée, une autre de la même colonne s'affecte et se modifie automatiquement s'ils ont le même ID ( colonne ID). Cette procédure s'applique uniquement sur les colonnes numérotées ( numéro en haut avant l’entête des colonnes ). et bien sur, la valeur modifiée ( bleu) et la cellule qui subie la modification automatique ( jaune ).
exemple :
Plage : F à DP ( Valeur qui subissent les modifications)
Ligne : 7 à 154 ( Numéro ID )
N°colonne : Ligne 1
-on veut modifier la valeur de la cellule ( ligne 9, colonne G ) et lui donnée "7" comme valeur.
-on vérifie d'abord si la colonne G est numérotée : OUI, son N° : "77" --> donc modification possible.
-La cellule change de couleur en bleu.
-Ensuite, on sait que le N° ID qui correspond à cette cellule (Ligne 9, colonne G) est le :"99"
-Si on le trouve autre part : ici le 99 se trouve dans la ligne 15 et ligne 31 donc la cellule (colonne G, ligne 15) et cellule (colonne G, ligne 31) se modifient automatiquement et prennent 7 comme valeur, et jaune comme couleur.
J'espère que mon exemple est assez clair pour m'aider.
Merci infiniment![]()
Bonjour,
Oui, c'est plus clair
Quelques questions complémentaires :
Est-ce à appliquer dans toutes les feuilles du classeur ?
Que faire si on vide la cellule (suppr) ?
Que faire si on modifie plusieurs cellules (suppr, copier-coller...) ?
- sur une feuille active surtout, et ça peut se faire sur plusieurs feuilles du classeur
Est-ce à appliquer dans toutes les feuilles du classeur ?
- si on supprime une valeur, les autres cellule de la même colonne qui ont le même ID seront supprimé. et on gardes les couleursQue faire si on vide la cellule (suppr) ?
- Si j'ai bien compris ta question,Que faire si on modifie plusieurs cellules (suppr, copier-coller...) ?
dans mon exemple : si tu regarde la colonne F ( avec un numéro 10 ) on a modifié la cellule (ligne 11, colonne F) : "valeur 8" et la cellule(ligne 28,colonne F) : "valeur 105" en même temps avec deux valeurs différentes.
Re,
A tester
Pour moi ça fonctionne comme de la magie Merci toto , je peux mettre ça dans module ?
sinon, tu peux m'expliquer ce que fait cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Erase ListID
Le code est dans la feuille
A copier-coller dans chaque feuille concernée
Re,
La ligne
vide le tableau de tous les ID que j'ai chargé en mémoire pour rechercher les lignes avec un ID identique à la cellule modifiée
Code : Sélectionner tout - Visualiser dans une fenêtre à part Erase ListID
on peut créer une procédure Workbook_SheetChange dans Thisworkbook si toutes les feuilles sont concernées (à moins d'introduire d'autres tests)donc il n'est pas possible de la mettre dans module en utilisant workbooksheet pour pouvoir l'utiliser à l'aide d'un bouton ?
Pas de bouton, ce sont des procédures événementielles, elles se lancent sur une action de l'utilisateur, ici la modification de la valeur d'une cellule
Je n'ai pas compris ta réponse comme un oui, donc j'ai considéré qu'on copierais le code dans les feuilles concernéesEst-ce à appliquer dans toutes les feuilles du classeur ?
- sur une feuille active surtout, et ça peut se faire sur plusieurs feuilles du classeur
Parfait j'apprends beaucoup avec toi.
Une dernière question (facultative) , je viens de lire le code et re-tester.
--> ton code respect parfaitement le principe expliqué ci-dessus,
Ma question :
y'a pas une connexion dans les deux sens entre les cellule bleu et jaune ?
sens 1 : modification manuelle entraîne couleur bleu --> entraîne modification automatique couleur jaune.
sens 2 : modification manuelle cellule jaune ( elle devient bleu ) --> il se passe rien ( la cellule bleu connecté avec elle grâce à l'ID ne change pas de valeur).
Merci pour ta patience![]()
Re,
Non, c'est bien, il faut que tu testes, je ne suis pas infaillible
En effet, c'est un soucis. Je suppose que la cellule bleue devrait changer de valeur. Mais doit-elle redevenir jaune ?sens 2 : modification manuelle cellule jaune ( elle devient bleu ) --> il se passe rien ( la cellule bleu connecté avec elle grâce à l'ID ne change pas de valeur).
Partager