Bonsoir a toutes et tous, Forum
Juste une question svp, je cherche comment faire en VBA pour ne pas écrire dans deux cellules qui sont A1 et B1
Merci a vous et de votre temps, une bonne soirée a vous
Cdlt
Bonsoir a toutes et tous, Forum
Juste une question svp, je cherche comment faire en VBA pour ne pas écrire dans deux cellules qui sont A1 et B1
Merci a vous et de votre temps, une bonne soirée a vous
Cdlt
Bonsoir,
Une possibilité, en gérant l"évènement "Change" de la feuille (en supprimant ce qui vient d'être écris), à mettre dans son module :
Sinon, la protection !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "B1" Then Application.EnableEvents = False Target = "" Application.EnableEvents = True End If End Sub
Hervé.
bonjour,
dans le même style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(0, 0) = "A1" Or Target.Address(0, 0) = "B1" Then Target.Offset(1, 0).Select End Sub
Bonjour Theze, Forum
Merci pour ta réponse, j'ai essayer ton code mais ça ne change rien, dû certainement a mon programme lorsqu'il tourne.
Si tu veux bien svp m'indiquer comment procéder, je voudrai bien essayer par le mode "protection" que tu me proposes, mais je ne sais pas faire.
Je te souhaite une très bonne journée
Cordialement Ray
Bonjour Fring, Forum
Merci pour ta réponse, j'ai essayer ton code également mais ça ne change rien, dû certainement a mon programme lorsqu'il tourne.
Je te souhaite une très bonne journée
Cordialement Ray
Tu as bien placé le code de Theze ou le mien dans le module de la feuille concernée ?
Tu souhaites bien empêcher d'écrire manuellement dans une de ces deux cellules ?
Re salut
oui j'ai bien placer vos codes et je n'écris pas manuellement dans les cellules
A1 et B1 mais c'est mon programme lorsqu'il tourne
je gère la feuil1 baptiser (compte) comme base de donnée pour une compta perso, simple via une Userform et 14 checkboxs
je peux poster les quelques lignes qui me posent problème
Merci de t'interesser a mon soucis
Cdlt Ray
Salut fring,
Merci pour ta réponse, voila le code, cette partie n'ai pas de moi, sinon je pense que j'aurai trouver pour palier a mon soucis quand mème.
j'ai modifier ce code plusieurs fois et j'ai sans doute je passe a coté desolé.
Merci et bon app a toi
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
47
48
49
50 Option Explicit Public WithEvents Bouton As MSForms.CheckBox ' Variable des 14 CheckBoxs Public ULab399 As MSForms.Label, ULab217 As MSForms.Label '*** VALIDER PRELEVEMENTS MENSUELS + LABELS 1 à 168 Private Sub Bouton_Click() Dim Col, Lig, NumLabel As Integer '*** Déclaration des variables Lig = Val(Mid(Bouton.Name, 9)): Col = Month(Date) - 1 NumLabel = Lig + (Col * 14) Set ULab399 = UserForm1.Controls("Label" & 399 + Lig) Set ULab217 = UserForm1.Controls("Label" & 217 + Col) With Sheets("Compte") If Bouton.Value = True Then If .Cells(Lig, "B") <> "" Then ' Quelque chose d'inscrit en colonne B ULab399.Caption = WorksheetFunction.Proper(format(.Cells(Lig, "B"), "Dddd dd Mmm yyyy")) Else ULab399.Caption = WorksheetFunction.Proper(format(Date, "Dddd dd Mmm yyyy")) End If If Val(Ws.Cells(Lig + 1, 5 + Col)) <> 0 Then UserForm1.Controls("Checkbox" & 1 + Lig - 1).BackColor = &H808080 ULab399.BackColor = &H808080 ' Backcolor Gris fonçé "Prélèvements" ULab399.ForeColor = vbCyan ' Ecriture en Cyan "Prélèvements" UserForm1.Controls("Label" & NumLabel).BackColor = &H808080 ' Backcolor Gris fonçé "Labels mois" Ws.Cells(Lig + 1, 5 + Col).Interior.ColorIndex = 16 ' Fond Gris cellule feuil1(Compte) Else ULab399.Caption = "" End If Else UserForm1.Controls("Checkbox" & 1 + Lig - 1).BackColor = vbBlue ULab399.Caption = "" ULab399.BackColor = vbBlue ' Backcolor Bleu Fond "Prélèvements" UserForm1.Controls("Label" & NumLabel).BackColor = vbBlue ' Backcolor Bleu fonçé "Labels mois" Ws.Cells(Lig + 1, 5 + Col).Interior.ColorIndex = 4 ' Fond Vert cellule feuil1(Compte) End If .Cells(Lig, "A") = IIf(Bouton.Value = True, 1, 0) .Cells(Lig, "B") = ULab399.Caption UserForm1.Controls("Label" & 181 + Col).Caption = IIf(Ws.Cells(17, 5 + Col) > 0, format(Ws.Cells(17, 5 + Col), Euro), "") ' Restant dû ULab217.Caption = format(Ws.Cells(20, 5 + Col), Euro) ' Solde If Ws.Cells(20, 5 + Col) < 0 Then ULab217.ForeColor = vbRed End If End With
Premier point, attention à la déclaration de tes variables, chaque variable doit être typée.
Concernant la variable Lig qui définit la ligne sur laquelle les informations seront écrites, elle dépend du dernier caractère du nom de la CheckBox. Le nom de ce contrôle est probablement un truc du style CheckBox1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim Col As Integer, Lig As Integer, NumLabel As Integer
Tu peux rectifier cela dans cette partie
en ajoutant +1 ou +5 ou... selon l'endroit où tu veux introduire les informations
Code : Sélectionner tout - Visualiser dans une fenêtre à part Lig = Val(Mid(Bouton.Name, 9))
ou modifier le nom des CheckBox pour que tu n'aies plus de CheckBox1
Code : Sélectionner tout - Visualiser dans une fenêtre à part Lig = Val(Mid(Bouton.Name, 9))+5
Bonjour,
... le Private Sub Worksheet_Change réagit à un changement de valeur via le code de toutes façons !
l'écriture en question s'agit-elle d'un changement de format et non de valeur ?
cordialement,
Didier
salut fring,
je voulais dire le Change par rapport au code de Theze
C4 = vierge au départ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Sub gogo() Worksheets(1).Range("C4").Value = "toto" End Subcordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Value <> "" Then If Target.Address = "$C$4" Then MsgBox "j'ai dit non !": Target.Value = "" End If End Sub
Didier
Re salut fring
Merci d'avoir pris le temps de regarder le code, j'ai modifier comme conseillé
mais j'ai une erreur d'exécution 2147024809 (80070057) objet spécifié introuvable
actuellement dans la propriété de chaque checkbox est checkbox1 - 2 - 3 etc si j'essai de modifier le nom des 14 checkboxs, elles s'appeleront toutes checkbox ???
ci-joint petite photo j'espère que cela te sera plus clair
Merci a toi et bonne fin d'après midi
Ray
En effet ne change pas le nom de tes CheckBox parce que d'autres contrôles en dépendent.
N'ayant pas tous les tenants et aboutissants de tes macros, il est difficile de te donner la solution "clé en main" comme ça à distance, je ne peux que te donner des pistes et à toi de faire l'effort de recherche pour obtenir le résultat voulu.
Logiquement, si je comprend bien le code, un cochant la CheckBox1, la macro écrit notamment dans les cellules A1 et B1, en cochant la CheckBox2 elle écrit dans les cellules A2 et B2, etc...
Tu veux faire quoi ? Tout décaler d'une ligne ?
En cochant la CB1 écrire en A2 et B2 ? En cochant la CB2 écrire en A3 et B3 ?
RE J'ai déja beaucoup chercher, rassure toi, mais pas trouver hélas
Tu bien compris, effectivement je souhaite tout décaler d'une ligne, que lorsque je clic dans le checkbox1 que cela commence a écrire en A2 et B2
de façons a laisser libre A1 et B1 pour que je puisse mettre un titre
Merci pour ta réponse c'est gentil
Ray
Essaie en modifiant ces deux lignes
Quoi que tu vas probablement devoir effectuer ce décalage sur d'autres lignes de code, à vue de nez je dirais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .Cells(Lig + 1, "A") = IIf(Bouton.Value = True, 1, 0) .Cells(Lig + 1, "B") = ULab399.Caption
A toi de tester et d'ajouter +1, +2, -1, ... à chaque variable Lig afin d'exécuter l'opération à la ligne voulue
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 With Sheets("Compte") If Bouton.Value = True Then If .Cells(Lig + 1, "B") <> "" Then '<-- ICI ULab399.Caption = WorksheetFunction.Proper(Format(.Cells(Lig + 1, "B"), "Dddd dd Mmm yyyy")) '<-- ICI Else ULab399.Caption = WorksheetFunction.Proper(Format(Date, "Dddd dd Mmm yyyy")) End If If Val(Ws.Cells(Lig + 2, 5 + Col)) <> 0 Then '<-- ICI UserForm1.Controls("Checkbox" & 1 + Lig - 1).BackColor = &H808080 ULab399.BackColor = &H808080 ULab399.ForeColor = vbCyan UserForm1.Controls("Label" & NumLabel).BackColor = &H808080 Ws.Cells(Lig + 2, 5 + Col).Interior.ColorIndex = 16 '<-- ICI Else ULab399.Caption = "" End If Else UserForm1.Controls("Checkbox" & 1 + Lig - 1).BackColor = vbBlue ULab399.Caption = "" ULab399.BackColor = vbBlue UserForm1.Controls("Label" & NumLabel).BackColor = vbBlue Ws.Cells(Lig + 2, 5 + Col).Interior.ColorIndex = 4 '<-- ICI End If .Cells(Lig + 1, "A") = IIf(Bouton.Value = True, 1, 0) '<-- ICI .Cells(Lig + 1, "B") = ULab399.Caption '<-- ICI UserForm1.Controls("Label" & 181 + Col).Caption = IIf(Ws.Cells(17, 5 + Col) > 0, Format(Ws.Cells(17, 5 + Col), Euro), "") ' Restant dû ULab217.Caption = Format(Ws.Cells(20, 5 + Col), Euro) ' Solde If Ws.Cells(20, 5 + Col) < 0 Then ULab217.ForeColor = vbRed End If
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager