• Initiateur de la discussion Initiateur de la discussion RONIBO
  • Date de début Date de début

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 !

RONIBO

XLDnaute Impliqué
bonsoir, 🙂

est ce que quelqu'un a du temps à consacrer pour me corriger ce macro?

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells(16, 1) = StrConv(Cells(16, 1), 1) Cells(18, 1) = StrConv(Cells(18, 1), 1) Cells(17, 7) = StrConv(Cells(17, 7), 1) Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' clic en dehors des tableaux pous effacer les lignes coloriées Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone ' Pour le tableau If Not Intersect(Target, Range("A23:H43")) Is Nothing And Target.Count = 1 Then Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150) End If End Sub Sub MasquerLignes() 'masquer les lignes à partir de la ligne 49 Range(Cells(49, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True

'masquer les colonnes à partir de la colonne H (ce qui correspond à la colonne 8) Range(Cells(1, 8), Cells(1, Columns.Count)).EntireColumn.Hidden = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' clic en dehors des tableaux pous effacer les lignes coloriées Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone ' Pour le tableau If Not Intersect(Target, Range("A23:H43")) Is Nothing And Target.Count = 1 Then Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone Range(Cells(Target.Row, 2), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150) End If End Sub

J'ai un message comme :

erreur de compilation

nom ambigui détecté Worksheet_SelectionChange

j'attends vos retour 🙂

a+
 
Re : Correction macro

Bonjour

ta demande est illisible
le plus simple est de joindre un bout de fichier ou au moins aller en mode avancé et mettre ton code entre balises pour qu'il garde sa mise en forme
le fichier reste le must

edit : bonjour Pierrot et bien vu sans doute
 
Re : Correction macro

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells(16, 1) = StrConv(Cells(16, 1), 1)
Cells(18, 1) = StrConv(Cells(18, 1), 1)
Cells(17, 7) = StrConv(Cells(17, 7), 1)
End Sub
Sub MasquerLignes()
'masquer les lignes à partir de la ligne 49
Range(Cells(49, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True

'masquer les colonnes à partir de la colonne H (ce qui correspond à la colonne 8)
Range(Cells(1, 8), Cells(1, Columns.Count)).EntireColumn.Hidden = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' clic en dehors du tableau pous effacer la ligne coloriée
Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
' Pour le tableau de désignation
If Not Intersect(Target, Range("A12:Y25")) Is Nothing And Target.Count = 1 Then
Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
End If
End Sub

Voila, c'est vrai que c'est plus simple 🙂
 
Re : Correction macro

Re

tu as donc bien 2 Private Sub Worksheet_SelectionChange(ByVal Target As Range)

dans un cas tu effectues des Strconv et dans un autre tu joues sur les propriétés

il faut que tu regroupes tout en 1 Selection_change mais sans savoir ce que tu veux faire exactement....?
 
Re : Correction macro

Re

pour préciser ma question, dans tes Selection_change, tu as

Cells(16, 1) = StrConv(Cells(16, 1), 1)
Cells(18, 1) = StrConv(Cells(18, 1), 1)
Cells(17, 7) = StrConv(Cells(17, 7), 1)

Quand veux-tu que cette action se fasse ?, actuellement à chaque fois que tu pointes une autre cellule.......

et

' clic en dehors du tableau pous effacer la ligne coloriée
Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
' Pour le tableau de désignation
If Not Intersect(Target, Range("A12:Y25")) Is Nothing And Target.Count = 1 Then
Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
End If

quand veux-tu qu eces actions se fassent ?
le premier Interior.Pattern = xlNone se fait aussi à chaque fois que tu pointes une autre cellule

et l'intérieur du i fse fait uniquement quand tu pointes dans la zone A12:Y25
 
Re : Correction macro

Bonjour à tous 🙂

Voici le macro en question :

Sub MasquerLignes()
'Masquer les lignes
Range(Cells(49, 1), Cells(Rows.Count, 1)).EntireRow.Hidden = True
'Masquer les colonnes
Range(Cells(1, 8), Cells(1, Columns.Count)).EntireColumn.Hidden = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells(16, 1) = StrConv(Cells(16, 1), 1)
Cells(18, 1) = StrConv(Cells(18, 1), 1)
Cells(17, 7) = StrConv(Cells(17, 7), 1)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' clic en dehors des tableaux pous effacer les lignes coloriées
Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
' Pour la partie désignation
If Not Intersect(Target, Range("A23:H43")) Is Nothing And Target.Count = 1 Then
Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("C23:E43")) Is Nothing Then
Target = UCase(Left(Target, 1)) & Mid(Target, 2)
End If
End Sub
 

Pièces jointes

Re : Correction macro

Re

je ne comprends pas tout à ton code.... notamment les histoires de ligne colorée (SelectionChange)

pour le conflit Change, tout le code suivant est à recopier (fenêtre VBA feuille aaaa:

Code:
Public annul 'évite les rebouclages multiples dans les worksheet_change
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 ' clic en dehors des tableaux pous effacer les lignes coloriées
 Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
 ' Pour la partie désignation
 If Not Intersect(Target, Range("A23:H43")) Is Nothing And Target.Count = 1 Then
 Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
 Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
 End If
 End Sub
 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Or annul = 1 Then annul = 0: Exit Sub
 'conversion écriture A16, A17, A18
 If Target.Address = "$A$16" Then Cells(16, 1) = StrConv(Cells(16, 1), 1): annul = 1: Exit Sub
 If Target.Address = "$A$18" Then Cells(18, 1) = StrConv(Cells(18, 1), 1): annul = 1: Exit Sub
 If Target.Address = "$A$17" Then Cells(17, 7) = StrConv(Cells(17, 7), 1): annul = 1: Exit Sub
 If Not Intersect(Target, Range("C23:E43")) Is Nothing Then Target = UCase(Left(Target, 1)) & Mid(Target, 2): annul = 1: Exit Sub
 annul = 0
 End Sub

dans le sub worksheet_change : quand on change la valeur on reboucle, j'ai introduit annul pour sortir au plus vite lors du rebouclage, le reste c'est d'après ce que j'ai cru comprendre du code
 
Re : Correction macro

Re

je ne comprends pas tout à ton code.... notamment les histoires de ligne colorée (SelectionChange)

pour le conflit Change, tout le code suivant est à recopier (fenêtre VBA feuille aaaa:

Code:
Public annul 'évite les rebouclages multiples dans les worksheet_change
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 ' clic en dehors des tableaux pous effacer les lignes coloriées
 Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
 ' Pour la partie désignation
 If Not Intersect(Target, Range("A23:H43")) Is Nothing And Target.Count = 1 Then
 Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
 Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
 End If
 End Sub
 Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Or annul = 1 Then annul = 0: Exit Sub
 'conversion écriture A16, A17, A18
 If Target.Address = "$A$16" Then Cells(16, 1) = StrConv(Cells(16, 1), 1): annul = 1: Exit Sub
 If Target.Address = "$A$18" Then Cells(18, 1) = StrConv(Cells(18, 1), 1): annul = 1: Exit Sub
 If Target.Address = "$A$17" Then Cells(17, 7) = StrConv(Cells(17, 7), 1): annul = 1: Exit Sub
 If Not Intersect(Target, Range("C23:E43")) Is Nothing Then Target = UCase(Left(Target, 1)) & Mid(Target, 2): annul = 1: Exit Sub
 annul = 0
 End Sub

dans le sub worksheet_change : quand on change la valeur on reboucle, j'ai introduit annul pour sortir au plus vite lors du rebouclage, le reste c'est d'après ce que j'ai cru comprendre du code

re,
Sa à l'air de bien fonctionné,
mise à part deux truck, la cellule G17 ne se met plus en majuscule,
puis lorsque que je clic sur C23 par exemple, le surlignage s'active pas (je pense que sa a du à la fusion des cellules)
a+
 
Re : Correction macro

Re

1/ cellule G17 c'est moi qui ai fait une erreur, il faut changer $A$17 en $G$17

2/ ton surlignage comme je te l'ai dit je ne comprends pas comment tu veux qu'il fonctionne :

Code:
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 ' clic en dehors des tableaux pous effacer les lignes coloriées
 Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
 ' Pour la partie désignation
 If Not Intersect(Target, Range("A23:H43")) Is Nothing And Target.Count = 1 Then
 Range("A23:H" & Range("A65535").End(xlUp).Row).Interior.Pattern = xlNone
 Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
 End If
 End Sub

a) à chaque changement de pointage de cellule, quelle que soit la cellule, tu supprimes le fond de la zone A23 et suivantes ?????
b) ensuite quand tu es sur une cellule non fusionnée (target.count=1) tu supprime le fond de toute ta facture ????
c) puis tu colories la ligne en cours


Que veux-tu faire exactement?
 
Dernière édition:
Re : Correction macro

re,

Je t'ai envoyé en mp concernant la copie original de ma facture 🙂

enfet lorsque que je selectionne une ligne de A23::H23 par exemple, je veux qu'il me surligne la ligne selectionnée ligne fusionnées compris, c'est à dire de A23:H23
a+
 
Re : Correction macro

Re

essai de tester cela

Code:
  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ' clic en dehors des tableaux pous effacer les lignes coloriées
  Range("A23:H" & Range("H65535").End(xlUp).Row).Interior.Pattern = xlNone
  ' Pour la partie désignation
  If Not Intersect(Target, Range("A23:B43")) Is Nothing And Target.Count = 1 Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
  End If
  If Not Intersect(Target, Range("C23:E43")) Is Nothing And Target.Count = 3 Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
  End If
  If Not Intersect(Target, Range("F23:H43")) Is Nothing And Target.Count = 1 Then
        Range(Cells(Target.Row, 1), Cells(Target.Row, 8)).Interior.Color = RGB(200, 100, 150)
  End If
  End Sub
 
- 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

Discussions similaires

Réponses
5
Affichages
909
Retour