Macro VBA incomplète

skygoat76

XLDnaute Junior
Bonjour,

J'ai une macro dans mon fichier (Cijoint.fr - Service gratuit de dépôt de fichiers)

Mon soucis est qu'elle a l'air de fonctionner une fois sur deux.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellRecherche, CelA, CelB As Range
Dim anneeA, anneeB, semaineA, semaineB As String

If Target.Column = 25 Then
    If Target = "" Then
        Range(Cells(Target.Row, 27), Cells(Target.Row, 30)).Interior.Color = RGB(125, 125, 125)
    Else
        Range(Cells(Target.Row, 27), Cells(Target.Row, 30)).Interior.Color = RGB(256, 256, 256)
    End If
End If

With ThisWorkbook.Sheets("ACTIONS")
    If UCase(Range("Y" & Target.Row).Text) = "OUI" Then
        
        [B]Set cellRecherche = .Columns("A").Find(Range("B" & Target.Row).Value, , xlValues, xlWhole, , , False)
        If Range("V" & Target.Row).Text = "Soldée" Then
            If Not cellRecherche Is Nothing Then cellRecherche.EntireRow.Delete
        Else
            If cellRecherche Is Nothing Then .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = Range("B" & Target.Row).Value
        End If
        
        Set cellRecherche = .Columns("B").Find(Range("H" & Target.Row).Value, , xlValues, xlWhole, , , False)
        If Range("V" & Target.Row).Text = "Soldée" Then
            If Not cellRecherche Is Nothing Then cellRecherche.EntireRow.Delete
        Else
            If cellRecherche Is Nothing Then .Range("B" & .Rows.Count).End(xlUp).Offset(1, 0) = Range("H" & Target.Row).Value
        End If[/B]
    
        Set cellRecherche = .Columns("C").Find(Range("I" & Target.Row).Value, , xlValues, xlWhole, , , False)
        If Range("V" & Target.Row).Text = "Soldée" Then
            If Not cellRecherche Is Nothing Then cellRecherche.EntireRow.Delete
        Else
            If cellRecherche Is Nothing Then .Range("C" & .Rows.Count).End(xlUp).Offset(1, 0) = Range("I" & Target.Row).Value
        End If
    
    End If
End With
End Sub

Le bout de code en gras est mon problème.

Vous pourrez voir que mon fichier a plusieurs onglets : "LUP VIE SERIE" et "ACTIONS". Et normalement, la macro devrait copier des valeurs d'un onglet à l'autre...

Or, elle le fait de façon hasardeuse...
 

Gorfael

XLDnaute Barbatruc
Re : Macro VBA incomplète

Salut skygoat76 et le forum
Je suppose que c'est la Worksheet_Change de la feuille "LUP VIE SERIE" ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellRecherche, CelA, CelB As Range
Dim anneeA, anneeB, semaineA, semaineB As String
Tu déclares seulement CelB en plage de cellule et semaineB en chaîne, les autres étant en Variant ?

Pourquoi ne pas limiter le déclenchement de la macro aux colonnes Y (25) et V (22) ?
Vous pourrez voir que mon fichier a plusieurs onglets : "LUP VIE SERIE" et "ACTIONS". Et normalement, la macro devrait copier des valeurs d'un onglet à l'autre...
Or, elle le fait de façon hasardeuse...
Non, pour ça, il faudrait que le fichier soit accessible sans mot de pass :eek:
Elle ne peut agir de manière hazardeuse : Excel fait toujours ce qu'on lui demande de faire et quelques (rares) fois ce qu'on voudrait qu'il fasse.
A+
 

skygoat76

XLDnaute Junior
Re : Macro VBA incomplète

J'ai retiré le mot de passe : Cijoint.fr - Service gratuit de dépôt de fichiers

En déclarant ainsi, cela ne signifie pas que cellRecherche, CelA et CelB sont Range ??? si non, c'est peut-être un début de réponse...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellRecherche, CelA, CelB As Range
Dim anneeA, anneeB, semaineA, semaineB As String

Pourquoi ne pas limiter le déclenchement de la macro aux colonnes Y (25) et V (22) ?

J'ai "bidouillé" la macro (car je suis super novice) pour qu'elle recopie le contenu des cellules des colonnes B, H et I.

A l'origine, la macro n'était prévu que pour la colonne I...

Merci pour votre aide.
 

Statistiques des forums

Discussions
312 198
Messages
2 086 140
Membres
103 129
dernier inscrit
Atruc81500