Probleme de compilation ou affectation

rebonjour j'ai un souci dans ma formule

quelqu'un peut il m'aider,

il me dit que j'ai une erreur de compilation : nombre d'argument incorrect ou affectation propriété incorrect

et il me surligne union

Option Explicit

Dim c, ln, i, plage()

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False 'On désactive les macro événementielles pour éviter

'de déclencher des macros automatiques indésirables

'qui risqueraient de créer des bugs

Application.ScreenUpdating = False 'On désactive la mise à jour de l'écran pour accélérer

'l'exécution de la macro

If Target.Count > 1 Then End 'Test : si il y a plus d'une cellule sélectionnées, on

'arrête la macro

'A l 'instruction suivante, on regarde si on a sélectionné

'la cellule G1 ou l'une des 6 cellules de dates de la

'colonne A

'Si oui, on continue

'Si non, on saute jusqu'à l'instruction ''End if'' qui

'correspond à ce If, c'est à dire qui est au même niveau

'sur une ligne verticale sur cette feuille, et la macro

'se termine

If Not Intersect(Target, Union(Range("G1"), Range("A7"), Range("A52"), Range("A97"), Range("A142"), Range("A187"), Range("A232"), Range("A277"), Range("A322"), Range("A367"), Range("A412"), Range("A457"), Range("A502"), Range("A547"), Range("A592"), Range("A637"), Range("A682"), Range("A727"), Range("A772"), Range("A817"), Range("A862"), Range("A907"), Range("A952"), Range("A997"), Range("A1042"), Range("A1087"), Range("A1132"), Range("A1177"), Range("A1222"), Range("A1267"), Range("A1312"), Range("A1357"))) Is Nothing Then

ActiveSheet.Unprotect "caje17" 'On déprotège la feuille, sinon on ne peut rien y modifier

'même avec une macro

For ln = 7 To 1357 Step 45 'On commence une boucle qui va permettre de passer toutes

'les lignes de la lignes 7 à la ligne 82 en sautant de 15 en

'15 lignes.

'A chaque tour de boucle, on sera ainsi sur la première ligne

' de la journée

'L'instruction suivante permet de sélectionner toutes les cellules blanches

'de la journée concernée. Ce sera les cellules blanches du lundi pour ln = 7

'puis celles du mardi pour ln = 22 etc...

For i = 0 To 2

ReDim Preserve plage(2)

Set plage(i) = Range("C" & ln + i * 15 + 2 & ":L" & ln + i * 15 + 4 & _

",M" & ln + i * 15 + 3 & ":R" & ln + i * 15 + 4 & _

",S" & ln + i * 15 + 2 & ":T" & ln + i * 15 + 4 & _

",U" & ln + i * 15 + 2 & ":X" & ln + i * 15 + 2 & _

",Y" & ln + i * 15 + 2 & ":AJ" & ln + i * 15 + 4 & _

",AK" & ln + i * 15 + 3 & ":AZ" & ln + i * 15 + 4 & _

",BA" & ln + i * 15 + 2 & ":BE" & ln + i * 15 + 4 & _

",BF" & ln + i * 15 + 2 & ":BF" & ln + i * 15 + 4 & _

",C" & ln + i * 15 + 6 & ":X" & ln + i * 15 + 14 & _

",Y" & ln + i * 15 + 6 & ":BF" & ln + i * 15 + 12 & _

",Y" & ln + i * 15 + 13 & ":BF" & ln + i * 15 + 14)

Next i

Union(plage(0), plage(1), plage(2)).Select

If Cells(ln, "A") = Cells(1, "G") Then 'Les cellules blanches de la semaine étant

'sélectionnée, on regarde si la 1ère cellule

'sélectionnée de la colonne A est égale à G1

Selection.Locked = False 'si la réponse est oui, on dévérouille les cellules

'sélectionnées

Else 'sinon

Selection.Locked = True 'on vérouille les cellules sélectionnées

End If

Next 'fin de la boucle : on retourne au début pour un tour de

'boucle supplémentaire si ln est inférieur ou égal à 82

'sinon, on sort de la boucle et on exécute l'instruction

'suivante

ActiveSheet.Protect "caje17" 'on protège la feuille avec un mot de passe

End If

Application.EnableEvents = True 'on réactive les macro événementielles

End Sub

Sub Evenement()

Application.EnableEvents = True

End Sub

merci de votre aide

Bonjour

En regardant l'aide sur Union le nombre de paramètres est limité à 30

Essayes de cette manière

  If Not Intersect(Target, Range("G1,A7,A52,A97,A142,A187,A232,A277,A322,A367,412,A457,A502,A547,A592,A637,A682,A727,A772,A817,A862,A907,A952,A997,A1042,A1087,A1132,A1177,A1222,A1267,A1312,A1357")) Is Nothing Then

désolé, ça ne fonctionne pas je suis a me tirer les cheveu

merci a toi

Bonjour

J'ai oublié un A

  If Not Intersect(Target, Range("G1,A7,A52,A97,A142,A187,A232,A277,A322,A367,A412,A457,A502,A547,A592,A637,A682,A727,A772,A817,A862,A907,A952,A997,A1042,A1087,A1132,A1177,A1222,A1267,A1312,A1357")) Is Nothing Then

desolé ca ne fonctionne pas non plus

je n'ai plus d'erreur mais ca me protege toute ma feuille alors que je veut que ca enleve juste la protection de la date du jours

merci de ton aide

je ne peut pas envoyer le fichier en meme temps car il est trop volumineux

allez les gars, svp j'ai besoin d'aide

merci

Bonsoir

A tester

Private Sub Worksheet_Change(ByVal Target As Range)

  Application.EnableEvents = False    ' On désactive les macro événementielles pour éviter
                                      ' de déclencher des macros automatiques indésirables
                                      ' qui risqueraient de créer des bugs

  Application.ScreenUpdating = False  ' On désactive la mise à jour de l'écran pour accélérer
                                      ' l'exécution de la macro

  If Target.Count > 1 Then End        ' Test : si il y a plus d'une cellule sélectionnées, on
                                      ' arrête la macro

  ' A l 'instruction suivante, on regarde si on a sélectionné
  ' la cellule G1 ou l'une des 6 cellules de dates de la
  ' colonne A
  ' Si oui, on continue
  ' Si non, on saute jusqu'à l'instruction ''End if'' qui
  ' correspond à ce If, c'est à dire qui est au même niveau
  ' sur une ligne verticale sur cette feuille, et la macro
  ' se termine
  'If Not Intersect(Target, Union(Range("G1"), Range("A7"), Range("A52"), Range("A97"), Range("A142"), Range("A187"), Range("A232"), Range("A277"), Range("A322"), Range("A367"), Range("A412"), Range("A457"), Range("A502"), Range("A547"), Range("A592"), Range("A637"), Range("A682"), Range("A727"), Range("A772"), Range("A817"), Range("A862"), Range("A907"), Range("A952"), Range("A997"), Range("A1042"), Range("A1087"), Range("A1132"), Range("A1177"), Range("A1222"), Range("A1267"), Range("A1312"), Range("A1357"))) Is Nothing Then
  If Not Intersect(Target, Range("G1,A7,A52,A97,A142,A187,A232,A277,A322,A367,A412,A457,A502,A547,A592,A637,A682,A727,A772,A817,A862,A907,A952,A997,A1042,A1087,A1132,A1177,A1222,A1267,A1312,A1357")) Is Nothing Then

    ActiveSheet.Unprotect "caje17"      ' On déprotège la feuille, sinon on ne peut rien y modifier
                                        ' même avec une macro

    For Ln = 7 To 1357 Step 45          ' On commence une boucle qui va permettre de passer toutes
                                        ' les lignes de la lignes 7 à la ligne 82 en sautant de 15 en
                                        ' 15 lignes.
                                        ' A chaque tour de boucle, on sera ainsi sur la première ligne
                                        ' de la journée

      ' L'instruction suivante permet de sélectionner toutes les cellules blanches
      ' de la journée concernée. Ce sera les cellules blanches du lundi pour ln = 7
      ' puis celles du mardi pour ln = 22 etc...

      For I = 0 To 2
        Set plage(I) = Range("C" & Ln + I * 15 + 2 & ":L" & Ln + I * 15 + 4 & _
                             ",M" & Ln + I * 15 + 3 & ":R" & Ln + I * 15 + 4 & _
                             ",S" & Ln + I * 15 + 2 & ":T" & Ln + I * 15 + 4 & _
                             ",U" & Ln + I * 15 + 2 & ":X" & Ln + I * 15 + 2 & _
                             ",Y" & Ln + I * 15 + 2 & ":AJ" & Ln + I * 15 + 4 & _
                             ",AK" & Ln + I * 15 + 3 & ":AZ" & Ln + I * 15 + 4 & _
                             ",BA" & Ln + I * 15 + 2 & ":BE" & Ln + I * 15 + 4 & _
                             ",BF" & Ln + I * 15 + 2 & ":BF" & Ln + I * 15 + 4 & _
                             ",C" & Ln + I * 15 + 6 & ":X" & Ln + I * 15 + 14 & _
                             ",Y" & Ln + I * 15 + 6 & ":BF" & Ln + I * 15 + 12 & _
                             ",Y" & Ln + I * 15 + 13 & ":BF" & Ln + I * 15 + 14)
      Next I

      Application.Union(plage(0), plage(1), plage(2)).Select

      If Cells(Ln, "A") = Cells(1, "G") Then  ' Les cellules blanches de la semaine étant
                                              ' sélectionnée, on regarde si la 1ère cellule
                                              ' sélectionnée de la colonne A est égale à G1

        Selection.Locked = False              ' si la réponse est oui, on dévérouille les cellules
                                              ' sélectionnées
      Else                                    ' sinon
        Selection.Locked = True               ' on vérouille les cellules sélectionnées
      End If
    Next Ln                                   ' fin de la boucle : on retourne au début pour un tour de
                                              ' boucle supplémentaire si ln est inférieur ou égal à 82
                                              ' sinon, on sort de la boucle et on exécute l'instruction
                                              ' suivante

    ActiveSheet.Protect "caje17"              ' on protège la feuille avec un mot de passe
  End If
  Application.EnableEvents = True             ' on réactive les macro événementielles
End Sub

Sub Evenement()
Application.EnableEvents = True
End Sub

j'ai vu sur un forum qu'on pouvait faire comme ca :

Dim Cell As Range

Dim MyRangePart1 As Range

Dim MyRangePart2 As Range

Dim MyBigRange As Range

Set MyRangePart1 = Union(Range('A1'), Range('A10'), Range('TOTO'))

Set MyRangePart2 = Union(Range('B1'), Range('B10'))

Set MyBigRange = Union(MyRangePart1, MyRangePart2

ForEach Cell In MyBigRange

Cell.Interior.ColorIndex = 3

Next

mais je ne sait pas comment l'adapter a ma formule si tu peut m'aider ca serait sympa

merci


j'ai vu sur un forum qu'on pouvait faire comme ca :

Dim Cell As Range

Dim MyRangePart1 As Range

Dim MyRangePart2 As Range

Dim MyBigRange As Range

Set MyRangePart1 = Union(Range('A1'), Range('A10'), Range('TOTO'))

Set MyRangePart2 = Union(Range('B1'), Range('B10'))

Set MyBigRange = Union(MyRangePart1, MyRangePart2

ForEach Cell In MyBigRange

Cell.Interior.ColorIndex = 3

Next

mais je ne sait pas comment l'adapter a ma formule si tu peut m'aider ca serait sympa

merci

Rechercher des sujets similaires à "probleme compilation affectation"