Objet requis

Résolu
jean300 Messages postés 382 Statut Membre -  
jean300 Messages postés 382 Statut Membre -
Bonjour chers amis,
Dans le code ci-dessous un avertissement me dit : Objet requis

au niveau de Set MaPlage
Pouvez-vous m'aider ? En vous remerciant

Configuration: Windows / Firefox 69.0

16 réponses

  1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
     
    Bonjour,

    Essaie plutôt avec
    Dim MaPlage As Range

    Cordialement
    1
  2. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35
    Je ne te remercierait jamais assez pour l'excellence de ton travail pour moi
    Le problème venait du fait que je n'avais pas supprimer la Mfc
    Reçois toute ma gratitude
    1
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,

      C'est ce que je supposais.
      Passe le sujet en résolu si tout est ok pour toi.
      Si pb ligne de titre, dis-le moi.

      Cordialement
      0
  3. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35
    Effectivement j'ai un problème avec la ligne de titre qui ne conserve pas la couleur (40) de A1 à AB1
    De plus la Mfc supprimée se remet tout le temps
    Je te remercie d'être revenu sur ce fil
    1
  4. jean300 Messages postés 382 Statut Membre 14
     
    Bonsoir ALS35,
    Je te remercie de nouveau pour ta patience et le partage de tes connaissance à moi qui nul.
    J'ai fouillé les 250 pages de code et trouvé ceci en rappelant que seule la plage A:AB la Mfc doit être supprimée.
    La Mfc qui concerne les colonnes AD et AF soit être conservée.
    Voici ce que j'ai trouvé :

    Feuil3ThisWorkbook
    </code> 'Standardisation des formats des données de la feuille Base
    Call BaseStandardiser(BaseLig:=0, DspMsg:=False)
    'If BaseStandardiser(BaseLig:=0, DspMsg:=False) Then MsgBox "La vérification de la feuille Base a rétabli certains formats de données"
    'Format MFC et Bordures de la feuille Base
    Call BaseFormaterFeuille</code>

    Feuil3
    </code>'Format MFC et Bordures de la feuille Base
    Call BaseFormaterFeuille</code>

    Module_Action
    </code> 'Retire les MFC
    ThisWorkbook.Sheets(VisiteNomFeuille).Cells.FormatConditions.Delete</code>

    Module_FeuillesEtBase
    '-----------------------------------------
    </code>'Ajout des MFC et Bordures en feuille Base
    '-----------------------------------------
    Public Sub BaseFormaterFeuille()

    'Les appelants doivent déprotéger Base avant l'appel (ne pas déprotéger ici cause imbrications des [dé]protections)
    If BaseIsProtected(Caller:="BaseFormaterFeuille") Then Exit Sub

    'Effacer toutes les MFC de la feuille
    ThisWorkbook.Sheets(BaseNomFeuille).Cells.FormatConditions.Delete

    'Ajoute MFC couleur de fond lignes paires
    Call BaseAjouterMFCFond(BaseLig0 + 1, NbMaxLigAv2007) '* 2 pour être à peu près sûr de couvrir toutes les lignes potentielles

    'Suppression des bordures
    Call BaseSupprimerBordures(BaseLig0 + 1, NbMaxLigAv2007) '* 2 pour être à peu près sûr de couvrir toutes les lignes potentielles

    'Numéro de la dernière ligne valorisée non filtrée de la feuille Base
    If ThisWorkbook.Sheets(BaseNomFeuille).AutoFilterMode Then ThisWorkbook.Sheets(BaseNomFeuille).Cells.AutoFilter 'Sécurise le calcul de BaseNblig
    BaseNbLig = ThisWorkbook.Sheets(BaseNomFeuille).Range(BaseColNom & Rows.Count).End(xlUp).Row

    'Ajoute des bordures
    Call BaseAjouterBordures(BaseLig0 + 1, BaseNbLig)
    End Sub</code>

    Module_FeuillesEtBase
    '----------------------------------------------
    'Ajoute la MFC fond alterné sur la feuille Base
    '----------------------------------------------
    Public Sub BaseAjouterMFCFond(ByVal LigDeb As Long, LigFin As Long)

    'Les appelants doivent déprotéger Base avant l'appel (ne pas déprotéger ici cause imbrications des [dé]protections)
    If BaseIsProtected(Caller:="BaseAjouterMFCFond") Then Exit Sub

    'Mise en forme conditionnelle colonnes vertes
    With ThisWorkbook.Sheets(BaseNomFeuille).Range(BaseColNom & LigDeb & ":" & BaseColDateMiseAJour & LigFin)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SI(ET(MOD(LIGNE();2)=0;INDIRECT(""$A"" & LIGNE())<>"""");VRAI;FAUX)"
    .FormatConditions(1).Interior.ColorIndex = 35
    End With

    'Mise en forme conditionnelle colonne jaune
    With ThisWorkbook.Sheets(BaseNomFeuille).Range(BaseColCc & LigDeb & ":" & BaseColCc & LigFin)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SI(ET(MOD(LIGNE();2)=0;INDIRECT(""$A"" & LIGNE())<>"""");VRAI;FAUX)"
    .FormatConditions(1).Interior.ColorIndex = 19
    End With

    'Mise en forme conditionnelle colonne rose
    With ThisWorkbook.Sheets(BaseNomFeuille).Range(BaseColBcc & LigDeb & ":" & BaseColBcc & LigFin)
    .FormatConditions.Add Type:=xlExpression, Formula1:="=SI(ET(MOD(LIGNE();2)=0;INDIRECT(""$A"" & LIGNE())<>"""");VRAI;FAUX)"
    .FormatConditions(1).Interior.ColorIndex = 38
    End With
    End Sub
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35,
    Je pense avoir trouvé car après avoir annihiler ces codes je n'ai plus de problème. Apparemment.
    J'ai placé un double apostrophe ' ' pour me repérer.
    En te remerciant et en attendant ton verdict pour placer le sujet en résolu.
    Module_FeuillesEtBase :
        'Ajoute MFC couleur de fond lignes paires
    '' Call BaseAjouterMFCFond(BaseLig0 + 1, NbMaxLigAv2007) '* 2 pour être à peu près sûr de couvrir toutes les lignes potentielles

    '' If BaseIsProtected(Caller:="BaseAjouterMFCFond") Then Exit Sub

    'Mise en forme conditionnelle colonnes vertes
    '' With ThisWorkbook.Sheets(BaseNomFeuille).Range(BaseColNom & LigDeb & ":" & BaseColDateMiseAJour & LigFin)
    '' .FormatConditions.Add Type:=xlExpression, Formula1:="=SI(ET(MOD(LIGNE();2)=0;INDIRECT(""$A"" & LIGNE())<>"""");VRAI;FAUX)"
    '' .FormatConditions(1).Interior.ColorIndex = 35
    '' End With
    1
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour jean300,

      Difficile de répondre car d'après ce que je comprends ici il n'y a qu'une toute partie du code. Mais si le fonctionnement te convient, c'est parfait.

      Attention cependant à ne pas avoir supprimé trop de fonctionnalités, car je vois que tu mis en commentaire la mise en forme conditionnelle sur les lignes paires et également sur des colonnes ! amis je ne connais le fonctionnement exact.
      L’important est que tu saches ce que tu veux obtenir.

      Si pb, ton fichier avec le code complet en message privé (en effaçant éventuellement les données vraiment confidentielles) => la petite enveloppe en haut à côté de ton pseudo, puis Message Privé, puis Destinataire puis ton message avec fichier lié par cjoint.com ou mon-partage.fr...
      Décris bien ce que tu veux.

      Cordialement
      0
  7. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35
    Cher ami je suis particulièrement touché par ton amabilité, je vais continuer cette semaine à vérifier le tout avant un séjour à l'hosto (Alzheimer oblige) je suis particulièrement conscient que ma fin approche mais je suis tranquille.
    Je vais clôturer ce fil et reviendrai vers toi s'il le faut et si je peux.
    Je te remercie pour tout ce que tu as fais pour me venir en aide.
    Que Dieu te bénisse.
    1
  8. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35
    Je souhaiterai qu'à l'activation de la feuille Base il n'y ait pas la ligne colorée en jaune
    En te remerciant
    PS : fichier en mp
    1
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour jean300,

      J'ai bien reçu ton fichier,

      Dans un premier temps , dans la procédure EffCouleur, remplace déjà

      Set MaPlage = Range("A3:AB" & DLigne)
      par
      Set MaPlage = Range("A2:AB" & DLigne)

      Cela évitera d'avoir la ligne 2 toujours en jaune après l'avoir sélectionnée une seule fois

      De plus quand tu cliques dans une autre colonne que A ou B, la ligne précédemment sélectionnée reste jaune. Si c'est ça que tu veux éviter alors rajoute dans le code de la feuille Base la procédure suivante :

      Private Sub Worksheet_Activate()
      EffCouleur
      End Sub

      Cela devrait encore améliorer le fonctionnement

      Cordialement
      0
  9. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35
    Je te cite :
    "De plus quand tu cliques dans une autre colonne que A ou B, la ligne précédemment sélectionnée reste jaune." C"est ce que je souhaite.
    J'aimerai seulement que lors de l'activation de la feuille Base la ligne jaune n'apparaisse pas.
    1
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Re bonjour,

      Oui, ce que tu veux c'est bien que la ligne reste jaune tant que tu es sur la feuille Base, mais que si tu la quittes et si tu y reviens tu ne veux pas cette ligne jaune ?

      Alors, fait bien les modifs comme je te l'ai indiqué

      Cordialement
      0
  10. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour ALS35
    Comme tu l'as certainement deviné, je suis plus que novice
    C'est pourquoi je te mets le code complet
    Merci de corriger ce qui cloche
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,

      Dans ta procédure Worksheet_SelectionChange, MaPlage est définie mais n'est pas affectée.

      Cordialement
      0
  11. jean300 Messages postés 382 Statut Membre 14
     
    Je ne sais si c'est comme cela qu'il faut faire
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Non, comme ça, (comme tu l'as fait dans la procédure EffCouleur)

      Dim MaPlage As Range

      Set MaPlage = Range("A:AB")
      0
  12. jean300 Messages postés 382 Statut Membre 14
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim plage As Range
    Dim Dligne As Long
    Dim MaPlage As Range

    Set MaPlage = Range("A:AB")


    Sub EffCouleur()
    Dim Ligne As Long
    Dim Dligne As Long
    Dim MaPlage As Range

    Set MaPlage = Range("A:AB")


    Seule les lignes impaires se colorie en jaune pas les lignes pairs
    J te remercie de m'aider car je ne m'en sors pas
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,

      Maintenant que tu n'as plus d'erreur de syntaxe, on arrive sur le fonctionnement.
      Explique exactement ce que tu veux et plutôt qu'une image difficilement exploitable poste directement ton code ici en utilisant la flèche et en choisissant Basic PUISen mettant le code entre les ><.

      Cordialement
      0
  13. jean300 Messages postés 382 Statut Membre 14
     
    Bonjour cher ami
    Si je pouvais ce serait avec plaisir que je mettrai le fichier, mais tout est confidentiel
    Ce que je recherche c'est que sur la feuille Base une ligne sur deux soit en vert clair
    Lors d'un clic en colonne A ou B la ligne se colorie en jaune clair
    C'est pourquoi je ne peux utiliser de Mfc
    Le tout limité à la plage A:AB

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim plage As Range
    Dim DLigne As Long
    Dim MaPlage As Range

    Set MaPlage = Range("A:AB")

    Application.ScreenUpdating = False
    If Target.Cells.Column > 2 Then Exit Sub
    EffCouleur
    Set plage = Application.Intersect(MaPlage, Rows(Target.Row))
    If Not plage Is Nothing Then
    plage.Interior.ColorIndex = 36 '(jaune clair)
    End If
    Application.ScreenUpdating = True
    End Sub

    Sub EffCouleur()
    Dim Ligne As Long
    Dim DLigne As Long
    Dim MaPlage As Range

    Set MaPlage = Range("A:AB")
    Application.ScreenUpdating = False
    DLigne = Range("A" & Rows.Count).End(xlUp).Row
    Set MaPlage = Range("A3:AB" & DLigne)
    MaPlage.Interior.ColorIndex = xlNone
    For Ligne = 1 To DLigne Step 2
    MaPlage.Rows(Ligne).Interior.ColorIndex = 35 '(vert clair)
    Next Ligne
    Application.ScreenUpdating = True
    End Sub
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,

      Pour moi, d'après ce que j'ai compris, le code ci-joint fonctionne bien sur les colonnes A:AB de la ligne 1 jusqu'à la dernière ligne remplie en colonne A.

      Essaie et redis-moi.

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      
      Dim DLigne As Long
      Dim MaPlage As Range
      Dim Plage As Range
          
          DLigne = Range("A" & Rows.Count).End(xlUp).Row
          Set MaPlage = Range("A1:AB" & DLigne)
          
          Application.ScreenUpdating = False
          
          If Target.Cells.Column > 2 Then Exit Sub
          
          EffCouleur
          Set Plage = Application.Intersect(MaPlage, Rows(Target.Row))
          If Not Plage Is Nothing Then
              Plage.Interior.ColorIndex = 36 '(jaune clair)
          End If
          
          Application.ScreenUpdating = True
      
      End Sub
      
      Sub EffCouleur()
      
      Dim Ligne As Long
      Dim DLigne As Long
      Dim MaPlage As Range
          
          DLigne = Range("A" & Rows.Count).End(xlUp).Row
          Set MaPlage = Range("A1:AB" & DLigne)
          
          MaPlage.Interior.ColorIndex = xlNone
          For Ligne = 1 To DLigne Step 2
              MaPlage.Rows(Ligne).Interior.ColorIndex = 35 '(vert clair)
          Next Ligne
      
      End Sub
      


      Cordialement
      0
  14. jean300 Messages postés 382 Statut Membre 14
     
    Le problème est toujours là, pas de coloriage jaune pour les lignes paires de la feuille,
    En te remerciant
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Pour moi ça marche, que la ligne dans laquelle on clique soit paire ou impaire dans la limite des lignes remplies en colonne A.
      À quel endroit places-tu tes macros ?

      Ci-joint un fichier test.
      https://www.cjoint.com/c/IJeoi7CSize

      Redis-moi
      Cordialement
      0
  15. jean300 Messages postés 382 Statut Membre 14
     
    Toujours pareil, je te remercie pour ta patience et tes connaissances que tu mets à ma portée mais je pense que je vais laisser tomber.

    Sur un classeur vierge ça fonctionne mais pas sur mon classeur.

    Les macros sont sur la feuille Base.
    En te remerciant infiniment pour tout le temps que tu as passé à me venir en aide.
    ps : si tu le souhaite je peux t'adresser le classeur par mail.
    0
    1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Vraiment bizarre.
      Oui tu peux m'envoyer ton classeur en message privé.

      Cordialement
      0
  16. jean300 Messages postés 382 Statut Membre 14
     
    Comment faut-il procéder ? autrement contacte-moi :
    Je reprendrai le sujet demain, car là cachets pour Alzheimer, sommifères
    jeanloudel***netcourrier.com
    les *** tu as compris je suis sur.
    De plus, la couleur ne doit pas changer pour la ligne de titre.
    0
  17. jean300 Messages postés 382 Statut Membre 14
     
    J'avais omis ce code, depuis c'est super grâce à ton génie.
    Mille remerciements cher ami.
    Je passe en Résolu.
    Private Sub Worksheet_Activate()
    EffCouleur
    End Sub
    0