Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je m'en sors toujours pas, c'est peut-être trop compliqué.
Alors je fais appel à vous pour voir comment on pourrait
faire une macro simple qui ferait ce que j'explique ici.
Ensuite, si on peut, j'essaierais de l'adapter à mon gros truc.
Je fais un choix de cellule, ca me les met en bleu.
J'aurais voulu que quand je clique la cellule A1 qui
est toujours le nom d'une feuille, cette feuille soit
sélectionnée et que par rapport à mon choix,
ce soient bien les "adresses" (C5, D3 par exemple)
qui soient mises en bleu aussi dans cette feuille (ici B)
Ca doit être possible, merci d'avance à ceux qui
sont plus doué que moi (ca, c'est pas dur...😀 )
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
😱 Bonsoir ,
Il me vient une idée tout d'un coup
Surement une hallu, mais...🙄
le souci que j'ai viendrait pas du fait que mon
réseau du boulot
est sous NT4 ??
Je vois pas bien le rapport avec un fichier xls
mais sinon ,,,
Expectative totale
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
Bonjour à tous, me revoila avec mon souci,
J'ai mis ca Application.WorksheetFunction.Substitute
a la place de Replace et pourtant .....😡
La je suis au boulot et malgré mes multiples essais en tout genre
avec 97 mon truc bug toujours sur cette ligne
alors qu'autrement, ca marche parfaitement bien.
If Left(Target.Value, 1) = "$" Then
pareil avec la méthode de bqtr.
En désespoir de cause, je le joins une dernière fois
en espérant un sauveur, sinon je laisserais tomber.😱
Au cas ou, milles mercis, et vive XLD
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Liste" Then
Target.Interior.ColorIndex = 33 If Left(Target.Value, 1) = "$" Then
Selection.Interior.ColorIndex = 33
Else
If Target <> Range("A1") Then
Target.Interior.ColorIndex = xlNone
MsgBox "Vous devez cliquer une adresse ! ", , "Pour mettre un doublon en couleur dans la feuille d'origine."
End If
End If
End If
Dim cell As Range, Refcel, Plg, UnionPlg
If Target = Range("A1") Then
Target.Interior.ColorIndex = xlNone
For Each cell In Range("A1").CurrentRegion
If cell.Interior.ColorIndex = 33 Then
Refcel = Application.WorksheetFunction.Substitute(cell, "$", "")
Plg = (Plg & Refcel & ",")
End If
Next
UnionPlg = Left(Plg, Len(Plg) - 1)
On Error Resume Next
Sheets(Range("A1").Value).Range(UnionPlg).Interior.ColorIndex = 33
Sheets(Range("A1").Value).Activate
End If
Application.EnableEvents = True ' Remise en place de l'intercepteur d'évènement
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
papapaul à dit:
Bonjour à tous, me revoila avec mon souci,
J'ai mis ca Application.WorksheetFunction.Substitute
a la place de Replace et pourtant .....😡
La je suis au boulot et malgré mes multiples essais en tout genre
avec 97 mon truc bug toujours sur cette ligne
alors qu'autrement, ca marche parfaitement bien.
If Left(Target.Value, 1) = "$" Then
pareil avec la méthode de bqtr.
En désespoir de cause, je le joins une dernière fois
en espérant un sauveur, sinon je laisserais tomber.😱
Au cas ou, milles mercis, et vive XLD
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Liste" Then
Target.Interior.ColorIndex = 33 If Left(Target.Value, 1) = "$" Then
Selection.Interior.ColorIndex = 33
Else
If Target <> Range("A1") Then
Target.Interior.ColorIndex = xlNone
MsgBox "Vous devez cliquer une adresse ! ", , "Pour mettre un doublon en couleur dans la feuille d'origine."
End If
End If
End If
Dim cell As Range, Refcel, Plg, UnionPlg
If Target = Range("A1") Then
Target.Interior.ColorIndex = xlNone
For Each cell In Range("A1").CurrentRegion
If cell.Interior.ColorIndex = 33 Then
Refcel = Application.WorksheetFunction.Substitute(cell, "$", "")
Plg = (Plg & Refcel & ",")
End If
Next
UnionPlg = Left(Plg, Len(Plg) - 1)
On Error Resume Next
Sheets(Range("A1").Value).Range(UnionPlg).Interior.ColorIndex = 33
Sheets(Range("A1").Value).Activate
End If
Application.EnableEvents = True ' Remise en place de l'intercepteur d'évènement
Salut à tous
Comme j'arrive après la bataille 😀 , difficile de savoir ce que fait ton code, et j'ai la flemme de reprendre poste par poste
Refcel = Application.WorksheetFunction.Substitute(cell, "$", "")
essaies de définir Refcel en string (si c'est ce que tu veux ou en range avec
set Refcel = Application.WorksheetFunction.Substitute(cell, "$", "")
Les déclarations de variables en plein milieu du code sont à proscrire : Mets les au début de ta macro, ton code sera plus lisible, et tu fera moins d'erreur. Une Vraie déclaration est mieux que de les mettre en Variant
Pour cette erreur : If Left(Target.Value, 1) = "$" Then Déclare une variable de test avant, et testes-la
Dim Test_Txt as string
.......
test_txt=target.address(0,0)
test_txt=target.value 'tu mets un point d'arrêt sur cette ligne If Left(Target.Value, 1) = "$" Then
.......
Comme tu as mis un point d'arrêt, la macro se lance et à sa rencontre s'arrête en mode pas-à-pas.
tu regarde dans la fenêtre de variables locales la valeur de test_txt
Comme on s'arrête avant d'exécuter la ligne du point d'arrêt, sa valeur est l'adresse de "target" en cours. Si ça correspond à tes attentes, F8 et test_Txt contiendra la valeur de target. si c'est Ok, tu continues avec F8 (ligne par ligne de code) ou F5 jusqu'à la sortie ou au prochain point d'arrêt dans l'ordre d'exécution du code.
A+
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
🙂 Bonsoir Gorfael,
Merci beaucoup d'essayer de m'aider.
Tes explications sont précises mais mettre un point d'arrêt
j'ai jamais fait. Je vais essayer de comprendre.
C'est la version excel 97 qui me pose problème
et comme je rebosse que mardi, je vais pas pouvoir avancer
ni te dire si j'arrive à me débrouiller.
Merci encore, je te tiens au courant dès que possible.
Bonne soirée à tous 😉
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
Bonjour le forum, j'ai tout essayé,😱
Je suis au boulot avec xl97,
J'ai testé toute la journée hier les idées de Gorfael
J'ai mis les Dim en début de code
J'ai essayé de mettre Refcel en String ou Variant
Mettre un point d'arrêt avec test_txt=target.value
Mettre Set devant Refcel etc.....
mais rien y fait😡
Quand je clique A1 pour aller sur la feuille de ce nom
et mettre la couleur
Ca plante tjs sur la ligne
If Left(Target.Value,1) = "$" Then
si en plus j'insiste, ca plante carrément tout excel.
alors qu'ailleurs (pas 97) tout fonctionne.
J'y comprends vraiment rien.
Ca fait comme si ca allait bien jusqu'a la fin de la procédure avec
Sheets(Range("A1").Value).Activate et qu'a ce moment au lieu
de rester sur cette feuille et mettre la couleur, ca revient dans la boucle.
Dans mon esprit, comme je lui demande de changer de feuille,
il applique à nouveau SheetSelectionChange.
Ca le fait pas chez moi(2000), pourquoi ca le fait avec 97 ?
Si quelqu'un a un peu de temps pour regarder le problème
ce serait hyper sympa.
Plus je creuse la question, plus je coule.
Bonne journée à tous
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
papapaul à dit:
Bonjour le forum, j'ai tout essayé,😱
Je suis au boulot avec xl97,
J'ai testé toute la journée hier les idées de Gorfael
J'ai mis les Dim en début de code
J'ai essayé de mettre Refcel en String ou Variant
Mettre un point d'arrêt avec test_txt=target.value
Mettre Set devant Refcel etc.....
mais rien y fait😡
Quand je clique A1 pour aller sur la feuille de ce nom
et mettre la couleur Ca plante tjs sur la ligne If Left(Target.Value,1) = "$" Then
si en plus j'insiste, ca plante carrément tout excel.
alors qu'ailleurs (pas 97) tout fonctionne.
J'y comprends vraiment rien.
Ca fait comme si ca allait bien jusqu'a la fin de la procédure avec
Sheets(Range("A1").Value).Activate et qu'a ce moment au lieu
de rester sur cette feuille et mettre la couleur, ca revient dans la boucle.
Dans mon esprit, comme je lui demande de changer de feuille,
il applique à nouveau SheetSelectionChange.
Ca le fait pas chez moi(2000), pourquoi ca le fait avec 97 ?
Si quelqu'un a un peu de temps pour regarder le problème
ce serait hyper sympa.
Plus je creuse la question, plus je coule.
Bonne journée à tous
Salut à tous
Si ça plante toujours sur la même ligne de code, isole-la dans une macro
sub test()
if left([A1],1)="$" then [B1]="oui" else [B1]="Non"
end sub
sub test_1()
dim X as string
x=[A1]
if left(X,1)="$" then [B1]="oui" else [B1]="Non"
end sub
sub test_2()
if left([A1],1)=chr(36) then [B1]="oui" else [B1]="Non"
end sub
etc...
C'est plus facile de tester juste un bout de code à la main, en pas-à-pas, que d'utiliser la macro automatique.
Si c'est bien sûr cette ligne de code que tu as un problème, la seule origine que je vois, c'est un problème d'interprêtation, $ étant le symbole du texte.
Je suppose que tu l'as enregistré sous avec un type Excel 97
difficile de t'aider, puisque ça fonctionne sous 2003. Donc, même si tu me l'envoie, je n'aurais pas le problème
EDIT ; pas tout lu (Oups ! ! !)
Tu vas modifier ta macro :
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
.........................................
ton code
.........................................
End sub
Tu vas ajouter des lignes
Code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Err_Workbook_SheetSelectionChange
Application.ScreenUpdating = False
Application.EnableEvents = False
.........................................
ton code
.........................................
Sort_Workbook_SheetSelectionChange:
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
Err_Workbook_SheetSelectionChange:
MsgBox (Err.Number & " - " & Err.Description)
Resume Sort_Workbook_SheetSelectionChange
End Sub
Normalement, puisque tu change de sélection, la macro doit se déclencher. C'est ça le fonctionnement normal.
les lignes que j'ai rajoutées sont là uniquement dans le but d'empêcher ce fonctionnement avec EnableEvents = false/true.
Le problème est qu'Excel en fait un peut à sa tête quand on lui laisse la main. S'il rencontre l'erreur sur la ligne, il bloque le déroulement de la macro et avertit. quand tu lui dit que t'as compris le message, il sort de la macro => sans remettre la gestion des évènements en route. Et comme c'est valable pour tout Excel, aucun évènement ne lance plus les macros, même dans les autres classeurs. Et tu n'en as aucune indication.
le blocage du rafraîchissement peut te mettre la puce à l'oreille, mais la gestion des erreurs et faites pour pallier à ce problème :
en cas d'eereur, Excel bloque la macro et envoie le pointeur de code à la ligne qui suit Err_Workbook_SheetSelectionChange.
tu avertis (comme Excel), et tu continues as la ligne qui suit Sort_Workbook_SheetSelectionChange et donc tu remets obligatoirement en route le rafraîchissement écran et la gestion des évènements.
Normalement, dans ton code, il n'y a pas d'autre Exit Sub. S'il y en avant avant Sort_Workbook_SheetSelectionChange:, il faut obligatoirement les remplacer par GoTo Sort_Workbook_SheetSelectionChange.
Si malgré tout, tu arrives à sortir sans passer sur EnableEvents = true, il suffit de faire une petite macro de relance :
Code:
Sub Lance()
Application.ScreenUpdating = True
Application.EnableEvents = True
end sub
et de la lancer manuellement
Commence par faire ça,, ton problème vient peut-être d'un déaut de variable
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
🙂 MAGNIFIQUE,
Je viens juste d'essayer vite fait (trop de boulot)
J'ai somplement recopié tes codes pour le début
On Error GoTo Err_Workbook_SheetSelectionChange
Application.ScreenUpdating = False
Application.EnableEvents = False
et mis à la fin ceux que tu me conseille
j'ai pas tout bien compris mais cette fois CA MARCHE.
Je ne sais pas comment te remercier Gorfael.
Tu m'enlèves une sacrée épine du pied
et aussi de la tête vu depuis le temps que je suis la dessus.
Re : Selection d'adresses de cellules dans liste d'une feuille vers position réelle
🙂 Trop content moi, terminée juste avant les vacances, mon Usine
La partie ci-dessus n'est en fait qu'une petite partie
de la grosse Usine que j'ai entrepris de construire il y
a déja quelques semaines.
Sur une feuille déterminée, (en principe énorme)
je peux y détecter les doublons de tous les items de cette feuille
de différentes facons grâce à des listbox ou cette fameuse
feuille Liste puis les mettre en couleurs pour ensuite mieux les repérer.🙄
Ceux qui l'ont pas encore vue peuvent trouver plusieurs fichiers
différents nommés "Usine" dans mes précedents posts.
La version complète est trop grosse et trop compliquée pour
mettre sur le forum, alors pour ceux que le sujet intéresse,
je pense surtout à tous ceux qui m'ont aidé, je tiens
à votre disposition la version que je considère comme définitive.
Faut bien s'arrêter😛
Si vous me dites comment joindre une pj avec
la messagerie privée du forum, ce sera avec plaisir.
Encore mercis à tous et longue vie à XLD
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD