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
Re

Merci pour le fichier
1ère question
Ton code dans la feuille Février correctement?
Car chez moi, il plante.

J'ai donc fait ce test sur un fichier vierge avec 2 feuilles
(dont une appelée toto)
J'ai mis le code ci-dessous dans l'autre feuille
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A8:A26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    If Application.CountA("A8:A26") > 0 Then
    Range("B8:AB8") = Worksheets("toto").Range("B8:AD8").Value
    Else
        If Application.CountA("A8:A26") = 0 Then
            Range("B8:AB8") = ""
        End If
    End If
    End If
End Sub
Ca ne plante plus, mais il se passe des choses bizarres. ;)
 

tdenis

XLDnaute Nouveau
Je te remercie pour le code.
je l'ai transformé pour que mon fichier
bon je complique la chose c 'est que mes cellules demandées en se suivent pas ...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A8:A26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    If Application.CountA("A8:A26") > 0 Then
    Range[COLOR=rgb(184, 49, 47)]("B8:M8,P8:Q8,S8,V8,X8:AA8")[/COLOR] = Worksheets("Janvier 21").Range([COLOR=rgb(209, 72, 65)]"B8:M8,P8:Q8,S8,V8,X8:AA8"[/COLOR]).Value
    [COLOR=rgb(65, 168, 95)]' je passe de B8 vers M8 de P8 vers Q8 et la suite .... et ca plante 
'il doit y avoir une astuce pour combiner des suites et des cellules "isolées"[/COLOR]
Else
        If Application.CountA("A8:A26") = 0 Then
            Range("B8:AB8") = ""
        End If
    End If
    End If
End Sub
et après quand la correspondance sera bonne , il faut que pour les lignes 9:26 si une des cellules de la colonne A8:A26 changent .Je remets :
Range("B9:M9,P9:Q9,S9,V9,X9:AA9") = Worksheets("Janvier 21").Range("B9:M9,P9:Q9,S9,V9,X9:AA9").Value
ou je dois faire une boucle?
c est compliqué Hein ;;;;;;)
ou je suis compliqué /)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Oui, c'est compliqué
mais surtout a y est
c l'heure de ma soirée TV
;)
Je passe le relais pour le moment à d'autres membres du forum.

Personnellement, j'utiliserai juste :
une feuille (pour des donnés) et un TCD
(et très peu de VBA)
Mais ceci est une autre histoire.
 

tdenis

XLDnaute Nouveau
JM
avec un peu de tests enfin beaucoup de tests..

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A8:A26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    If Application.CountA("A8:A26") = "" Then
            Range("B8:M8") = ""
        Range("Q8") = ""
        Range("V8") = ""
        Range("X8") = ""
        Range("Y8") = ""
        Range("Z8") = ""
        Range("AA8") = ""
        Range("C9") = ""
    Else
    If Application.CountA("A8:A26") >= 1 Then
        Range("B8:M8") = Worksheets("Janvier 21").Range("B8:M8").Value
        Range("Q8") = Worksheets("Janvier 21").Range("Q8").Value
        Range("V8") = Worksheets("Janvier 21").Range("V8").Value
        Range("X8") = Worksheets("Janvier 21").Range("X8").Value
        Range("Y8") = Worksheets("Janvier 21").Range("Y8").Value
        Range("Z8") = Worksheets("Janvier 21").Range("Z8").Value
        Range("AA8") = Worksheets("Janvier 21").Range("AA8").Value
        Range("C9") = Worksheets("Janvier 21").Range("C8").Value
        End If
    End If
    End If
End Sub
Cela fonctionne pour les cellules mais quand le résultat ou valeur de ma cellule A8 change, cela n'active pas la fonction...
en tout cas si tu as une solution mais le reste fonctionne
un grand merci
Thierry
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Thierry

1) Je me permets cette suggestion
"Utilises les balises BBCode idoines"
Je te laisse décrypter cette phrase ;)
Un indice: penche ton œil droit tout en bas de la page
(à droite), tout prêt de l'icone RSS
Tu as clique dessus ?
Alors trouves la balise, et fais ce que tu as faire, camarade!
(et là je te dirai "Merci pour nos yeux" 2ième indice gratuit;)
 
Dernière édition:

tdenis

XLDnaute Nouveau
Re

Merci pour le fichier
1ère question
Ton code dans la feuille Février correctement?
Car chez moi, il plante.

J'ai donc fait ce test sur un fichier vierge avec 2 feuilles
(dont une appelée toto)
J'ai mis le code ci-dessous dans l'autre feuille
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A8:A26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    If Application.CountA("A8:A26") > 0 Then
    Range("B8:AB8") = Worksheets("toto").Range("B8:AD8").Value
    Else
        If Application.CountA("A8:A26") = 0 Then
            Range("B8:AB8") = ""
        End If
    End If
    End If
End Sub
Ca ne plante plus, mais il se passe des choses bizarres. ;)
Bonsoir Staple1600,
j'ai essayé le code ci dessus mais il y a un soucis car la version "" ne réagit pas .. quand je rentre une valeur dans un premier temps en A8 supérieure a 0 mes données se remplissent bien mais dans un deuxième temps je remets 0 en A8 , la les cellules ne deviennent pas ""
J'ai du mal à saisir ce beugle...
merci pour ton orientation
Thierry
 

tdenis

XLDnaute Nouveau
Bonsoir Jm,
j'ai résolu le soucis de remplir les cellules en "" quand le source est égale à "0"
voici le code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("A8:A26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    If Cells.Range("A8").Value = "" Then
        Range("B8:M8") = ""
        Range("Q8") = ""
        Range("V8") = ""
        Range("X8") = ""
        Range("Y8") = ""
        Range("Z8") = ""
        Range("AA8") = ""
    Else
       If Cells.Range("A8").Value > 0 Then
            Range("B8:M8") = Worksheets("Janvier 21").Range("B8:M8").Value
            Range("Q8") = Worksheets("Janvier 21").Range("Q8").Value
            Range("V8") = Worksheets("Janvier 21").Range("V8").Value
            Range("X8") = Worksheets("Janvier 21").Range("X8").Value
            Range("Y8") = Worksheets("Janvier 21").Range("Y8").Value
            Range("Z8") = Worksheets("Janvier 21").Range("Z8").Value
            Range("AA8") = Worksheets("Janvier 21").Range("AA8").Value
        End If
        End If
    If Cells.Range("A14").Value = "" Then
        Range("B14:M14") = ""
        Range("Q14") = ""
        Range("V14") = ""
        Range("X14") = ""
        Range("Y14") = ""
        Range("Z14") = ""
        Range("AA14") = ""
    Else
       If Cells.Range("A14").Value > 0 Then
            Range("B14:M14") = Worksheets("Janvier 21").Range("B14:M14").Value
            Range("Q14") = Worksheets("Janvier 21").Range("Q14").Value
            Range("V14") = Worksheets("Janvier 21").Range("V14").Value
            Range("X14") = Worksheets("Janvier 21").Range("X14").Value
            Range("Y14") = Worksheets("Janvier 21").Range("Y14").Value
            Range("Z14") = Worksheets("Janvier 21").Range("Z14").Value
            Range("AA14") = Worksheets("Janvier 21").Range("AA14").Value
        End If
    End If
    End If
End Sub
le soucis qui est récurent est que la macro ne se déclenche pas quand la valeur de mes cellules source " A8:A26 changent ( car elles changent automatiquement --> pas d'action 'entrée' ou autre...
pour le reste du code tout fonctionne.

Merci et joyeux noel
Thierry
 

Statistiques des forums

Discussions
315 133
Messages
2 116 607
Membres
112 803
dernier inscrit
Falcon