Bonjour,
Ci-joint un petit tableau exemple de ce que je souhaiterai obtenir...
Je pense que cela doit être faisable...
D'avance, un grand merci
fichier "change equipe.xlsx" joint
Bonjour,
Ci-joint un petit tableau exemple de ce que je souhaiterai obtenir...
Je pense que cela doit être faisable...
D'avance, un grand merci
fichier "change equipe.xlsx" joint
Bonjour,
Ceci:
raivig_Metre à jour une cellule précise.xlsm
Cdlt
Bonjour Arturo,
grand merci pour l'aide... mais j'ai dû mal m'exprimer
les deux listes de joueurs sont exactement les mêmes listes sauf que l'une et l'autre sont triées différemment.
et j'ai besoin de conserver ces deux listes triées ainsi.
Il faut donc que pour le joueur sélectionné... la nouvelle équipe apparaisse dans les deux listes
j'espère que c'est fasable
Ok, alors ceci:
raivig_Metre à jour une cellule précise.xlsm
Cdlt
Super c'est ce que je recherche...
Je vais essayer d'adapter ceci à mon tableau original...
suis pas certain d'y arriver mais je vais essayer.
Merci beaucoup
PS: je viens de m'apercevoir que si on efface la case "nouvelle équipe" le joueur concerné n'a plus d'équipe affectée.
Hors une fois que la mise à jour (nouvelle équipe) a été faite la case F20 doit être effacée...
Ok, voilà la modif
Saurez-vous la recopier à la place de l'autre?
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 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Sortie Application.EnableEvents = False If Target.Address = "$F$20" Then If Target.Value = "" Then Exit Sub Joueur = Target.Offset(0, -3).Value With Range("F6:F13") Set x = .Find(Joueur) If Not x Is Nothing Then Cells(x.Row, "G") = Target.Value Range("F6:G13").Sort Range("G6"), 1 End If End With With Range("C6:C13") Set x = .Find(Joueur) If Not x Is Nothing Then Cells(x.Row, "D") = Target.Value Range("C6:C13").Sort Range("C6"), 1 End If End With End If Sortie: Application.EnableEvents = True End Sub
Oui, j'ai recopié...
par contre ce qui cloche c'est que après une modification d'équipe... on ne peut pas faire d'autre modification
Je suis désolé de vous solliciter autant
par contre ce qui cloche c'est que après une modification d'équipe... on ne peut pas faire d'autre modification
C'est à dire? j'ai fait plusieurs essais, changer de joueur, d'équipe et tout fonctionne correctement. Expliquez en détail ce que vous faites comme opérations afin que je les reproduise.
En fait, votre système fonctionne très bien.
Je viens de faire plusieurs essais avec plusieurs joueurs.. pas de problème.
Par contre si j'efface la cellule (F20) "nouvelle équipe" à ce moment là, ça ne fonctionne plus.
C'est pas grave je peux laisser cette cellule (f20) telle quelle.
Je pense que ça devrait aller comme ça...
Encore un grand merci
Cordialement
Non, il n'y a pas de raison, ça ne marche pas parce que je me suis trompé, voici la macro corrigée
Cdlt
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 Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo Sortie Application.EnableEvents = False If Target.Address = "$F$20" Then If Target.Value = "" Then GoTo Sortie Joueur = Target.Offset(0, -3).Value With Range("F6:F13") Set x = .Find(Joueur) If Not x Is Nothing Then Cells(x.Row, "G") = Target.Value Range("F6:G13").Sort Range("G6"), 1 End If End With With Range("C6:C13") Set x = .Find(Joueur) If Not x Is Nothing Then Cells(x.Row, "D") = Target.Value Range("C6:C13").Sort Range("C6"), 1 End If End With End If Sortie: Application.EnableEvents = True End Sub
Excellent,
c'est vraiment génial...
un gros gros gros merci
Bonjour Arturo
Je suis désolé de revenir à la charge avec mon histoire de changement d'équipe.
Le petit exemple que vous m'avez renvoyé fonctionnait très bien...
J'ai essayé d'adapter cela sur ma feuille réelle... je n'y arrive pas.
Pourtant j'ai remplacé les références de cellules, rien à faire.
Je me permets de vous adresser ma feuille originale... pourriez-vous adapter votre code à cette feuille ???
Promis, je ne vous embêterai plus
Cordialement
Bonjour,
Si dès le départ vous aviez mis le vrai fichier, vous auriez eu la bonne solution. Là, il faut tout reprendre à zéro puisque les emplacements sont différents et que vous utilisez des tableaux structurés. Pensez-y pour les prochaines fois.
la nouvelle macro:
et le fichier
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 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim f1 As Worksheet Dim Tabl_1 As ListObject, Tabl_2 As ListObject Dim Name2 As String Dim Col_1 As ListColumn, Col_3 As ListColumn Dim x As Range On Error GoTo Sortie Application.ScreenUpdating = False Application.EnableEvents = False 'on empêche de relancer la macro après chaque changement dans la feuille Set f1 = Sheets("Feuil1") If Target.Address = "$T$9" Then If Target.Value = "" Then GoTo Sortie 'en cas d'erreur Name2 = Target.Offset(-4, -1).Value 'Valeur à rechercher Set Tabl_2 = f1.ListObjects("T_Players2") 'nom du tableau structuré 2 Set Col_1 = Tabl_2.ListColumns(1) 'Colonne 1 = colonne "Name2" Set x = Col_1.DataBodyRange.Find(Name2) 'on cherche le "Name2" dans la colonne 1 du tableau 2 If Not x Is Nothing Then 'si elle est trouvée Cells(x.Row, "M") = Target.Value 'on applique la valeur recherchée Tabl_2.Sort.SortFields.Clear 'on initialise le tri Tabl_2.Sort.SortFields.Add2 Key:=Range("T_Players2[Team]"), SortOn:=xlSortOnValues, Order:=xlAscending 'on tri par "TEAM" Tabl_2.Sort.SortFields.Add2 Key:=Range("T_Players2[Name2]"), SortOn:=xlSortOnValues, Order:=xlAscending 'on tri par "Name2" Tabl_2.Sort.Apply 'On applique le tri End If Set Tabl_1 = f1.ListObjects("T_Players1") ' nom du tableau structuré 1 Set Col_3 = Tabl_1.ListColumns(3) 'Colonne 3 = colonne "Name2" Set x = Col_3.DataBodyRange.Find(Name2) 'on cherche le "Name2" dans la colonne 2 du tableau 1 If Not x Is Nothing Then 'si elle est trouvée Cells(x.Row, "G") = Target.Value 'on applique la valeur recherchée Tabl_1.Sort.SortFields.Clear 'on initialise le tri Tabl_1.Sort.SortFields.Add2 Key:=Range("T_Players1[Name1]"), SortOn:=xlSortOnValues, Order:=xlAscending 'on tri par "Name2" Tabl_1.Sort.SortFields.Add2 Key:=Range("T_Players2[Team]"), SortOn:=xlSortOnValues, Order:=xlAscending 'on tri par "TEAM" Tabl_1.Sort.Apply 'On applique le tri End If End If Sortie: Set f1 = Nothing Set Tabl_1 = Nothing Set Tabl_2 = Nothing Set x = Nothing Set Col_1 = Nothing Set Col_3 = Nothing Application.EnableEvents = True 'on autorise de nouveau les changements dans la feuille End Sub
Raivig_Mettre à jour une cellule précise.xlsm
Cdlt
Bien entendu, j'ignorais ce détail... et j'en suis désolé.
Comme je ne m'y connais pas en programmation, je pensais que ce serait simple de simplement copier/coller.
J'arrive juste à faire des petites macros en cliquant dur "développeur", "enregistrer une macro"... donner un nom et enregistrer le cheminement...
Je suis impressionné par votre maîtrise et votre niveau.
J'aurais appris cette chose...
En tout cas, un énorme merci car cela me rend un très grand service.
Cordialement
Partager