Microsoft 365 Erreur 5

tdenis

XLDnaute Nouveau
Bonjour à tous,
je suis pas un performeur dans le vba..
pouvez vous m'aider s'il vous plait
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A8:A26")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
 If Cells("A8;A26").Value > 0 Then
       Range("B8:C8:D8:E8:F8:G8:H8:I8:J8:K8:L8:M8:P8:W8:Y8:Z8:AA8:AB8") = Worksheets("Janvier 21").Range("AD8:AE8:B8:C8:D8:E8:F8:G8:H8:I8:J8:K8:L8:M8:P8:U8:W8:X8:AD8").Value
       Range("B9:C9:D9:E9:F9:G9:H9:I9:J9:K9:L9:M9:P9:W9:Y9:Z9:AA9:AB9") = Worksheets("Janvier 21").Range("AD9:AE9:B9:C9:D9:E9:F9:G9:H9:I9:J9:K9:L9:M9:P9:U9:W9:X9:AD9").Value
     Else
         If Range("A8:A26").Value = "0" Then
            Range("B8:C8:D8:E8:F8:G8:H8:I8:J8:K8:L8:M8:N8:P8:W8:Y8:Z8:AA8:AB8:AD8").Value = ""
        End If
    End If
    End If
End Sub

en vous remerciant par avance
Thierry
 

Staple1600

XLDnaute Barbatruc
Bonjour

Fais ce petit test en sirotant ton thé
(oui c'est l'heure du thé ;))
VB:
Sub Ceci()
MsgBox Range("B8:C8:D8:E8:F8:G8:H8:I8:J8:K8:L8:M8:P8:W8:Y8:Z8:AA8:AB8").Address
End Sub
Sub N_Est_Pas_Cela()
MsgBox Range("B8:M8,P8,W8,Y8:AB8").Address
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Il faut lancer les deux macros (pour voir la différence)
(car oui il y avait deux macros dans mon message)
NB: Je n'ai pas écrit que c'était une solution ou une réponse.
Mais je t'ai simplement suggéré de faire un test.
(motivé par ce que tu indiques en début de message)
je suis pas un performeur dans le vba..
Donc refais le test et redis moi, stp, ce que tu constates comme différence.
 

tdenis

XLDnaute Nouveau
Je m'en doutais que c'était un petit test pour savoir ou je me situe en connaissance de vba... donc je suis en bas , au plus bas ;)
de ce que j'ai compris la première fonction me dit: de la cellule B8 jusqu'a la AB8
alors que l'autre identifie chaque cellule mentionnées ... j'ai bon ?
donc il y a une erreur de cells ? ou dans mes ,;: entre chaque cellules ?
le but de ma fonction est la suivante:
dès que dans la colonne A8;A26 le contenu change
j'applique la formule si la cellule changeante est supérieure a 0 je renvoie les valeurs des cellules indiquées de la feuille précédente vers les cellules indiquées
et si la cellule changeante est égale à 0 les cellules seront vides...
j'ai l'impression de comprendre le fonctionnement de vba mais je n'arrive pas a écrire ce langage ...;(
 

Staple1600

XLDnaute Barbatruc
Re

Ceci est ce qu'on lit dans ton premier message, non?
If Cells("A8;A26").Value > 0 Then
Range("B8:C8:D8:E8:F8:G8:H8:I8:J8:K8:L8:M8:P8:W8:Y8:Z8:AA8:AB8") = Worksheets("Janvier 21")...
Question:
Quelle plage de cellules exactement doit être traitée par ta macro
Pour la savoir, j'utilise un MsgBox
C'est la macro nommée Ceci
Et qu'observe-t-on quand on l'exécute ?
Tu peux me le dire?
Oui, il peut le dire ;)
 

tdenis

XLDnaute Nouveau
Quand je l'exécute elle me dit : $B$8:$AB$8
alors il faut savoir que lorsque ma cellule change de valeur (sans que je clique manuellement: formule exécutant un résultat sur la cellule A8) ma fonction Worksheet_Change(ByVal Target As Range) ne s'active pas... j'ai l'impression de tomber dingue des fois
tu as du taf ...;)
pour je devienne un performeur
;)
 

Staple1600

XLDnaute Barbatruc
Re

Alors un second test (pour que tu comprennes ce que j'essaie de te faire comprendre)
VB:
Sub Ceci_Cela()
Dim Chapi As Range, Chao As Range
Set Chapi = Range("B8:C8:D8:E8:F8:G8:H8:I8:J8:K8:L8:M8:P8:W8:Y8:Z8:AA8:AB8")
Set Chapo = Range("B8:AB8")
xx = Chapi.Address: yy = Chapo.Address
MsgBox "Chapi= " & xx & Chr(13) & "Chapo: " & yy
MsgBox xx = yy, vbExclamation, "Chapi Chapo Patapo Chapo Chapi Patapi"
End Sub
 

tdenis

XLDnaute Nouveau
Bon ce que j'ai compris
quand je veux mettre des cellules qui se suivent je mets A8:AB8
si je veux des cellules bien précises je mets A8:G8,I8:AB8 la le cellule H8 n'est prise en compte ..
j'ai bon ?
ce qui veut dire que toutes les cellules que j'ai écrites avec les : ne savent a rien car cela prend en compte la première et la dernière...
ouffff je crois avoir bon
;))))))
 

Staple1600

XLDnaute Barbatruc
Re

Un dernier test
VB:
Sub Test_3()
Dim Plage As Range, c As Range
Set Plage = Range("B8:AB8"): Plage = "=COLUMN()": Plage.Columns.AutoFit: [A1].Select
For Each c In Plage
MsgBox c.Address(0, 0) & " | " & c, vbInformation, " Adresse | Valeur"
Next
End Sub
Donc reste à savoir, quelles sont les réelles plages de cellules que tu dois traiter dans ta macro.
 

Statistiques des forums

Discussions
315 133
Messages
2 116 607
Membres
112 804
dernier inscrit
padu