Case à cocher et macro

Bonjour,

J'ai récupéré sur ce forum une macro intéressante pour compiler sur un seul onglet les informations de tous les onglets présents. Je la mets ci-dessous :

Sub RECAP()
Dim dlgR As Integer, dlgi As Integer
Dim i As Byte
With Sheets("RECAP")
dlgR = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A2:M" & dlgR).ClearContents
End With
For i = 1 To Worksheets.Count
    If UCase(Sheets(i).Name) <> "RECAP" And (Sheets(i).Name) <> "Paramètre" Then
        dlgR = Sheets("RECAP").Range("A" & Rows.Count).End(xlUp).Row
        With Sheets(i)
            dlgi = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A2:M" & dlgi).Copy Sheets("RECAP").Range("A" & dlgR + 1)
        End With
    End If
Next
End Sub

J'aimerai ajouter sur l'onglet récapitulant les autres onglets, une colonne dans laquelle il y aurait une case à cocher et qui permettrait de rendre la ligne verte.
J'ai utilisé le développeur en insérant la case à cocher mais lorsque je relance la macro la mise en page qui fait que la ligne devient verte disparait.

Est-ce que vous auriez une solution pour que la macro ne supprime pas la mise en page ?

Merci d'avance,

Bonjour,

faire un copier valeur :

'remplacer :
.Range("A2:M" & dlgi).Copy Sheets("RECAP").Range("A" & dlgR + 1)
' par :
Sheets("RECAP").Range("A" & dlgR + 1).value = .Range("A2:M" & dlgi).value

eric

Bonjour
ça ne fonctionne pas malheureusement

Je vous envoie le fichier pour que vous puissiez voir mais cela supprime beaucoup d'info

Merci de votre aide

Peut-être même vous avez une solution plus adaptée.

En clair je veux qu'à chaque ligne s'affiche une case à cocher qui permettrait une fois cochée de passer la ligne en vert. Et j'aimerai que la feuille RECAP soit figée une fois que la case est cochée.

Merci de votre aide précieuse

Bonjour,

il manquait un .Resize() : Sheets("RECAP").Range("A" & dlgR + 1).Resize(dlgi - 1, 13).Value = .Range("A2:M" & dlgi).Value

c'est le pb quand il n'y a pas de fichier de travail pour tester

Pour le reste qq chose m'échappe.
Qu'est-ce que tu entends par "j'aimerai que la feuille RECAP soit figée une fois que la case est cochée." ?
Tu ne t'autorises à cocher qu'une seule ligne et ensuite que plus aucune action soit possible sur la feuille ?
Et on est d'accord que si tu relances la macro, l'état de la case à cocher doit être réinitialisé ?

Rien à voir mais une MFC sur une colonne complète c'est non. Beaucoup trop chronophage ces trucs là.
Il faudrait les supprimer avant une copie et les recréer après chaque collé sur le nombre de lignes nécessaire.
Enfin... si tu sais que tu n'auras jamais plus que qq centaines de lignes tu peux les laisser crées, mais réduites à la plage nécessaire

Je te joins le fichier pour que tu comprennes peut-être mieux.

En clair, les onglets en vert sont remplis par la main de l'homme. Et aucune information n'est supprimée de ces onglets normalement.

En rouge, dans l'onglet RECAP je souhaite que la totalité des onglets en vert soit récapitulée. Ce qui est le cas avec la Macro actuelle.

Cependant, sur l'onglet RECAP, encore une fois la main de l'homme doit intervenir au niveau de la colonne "Règlement" afin d'indiquer 'Oui' ou de cocher une case pour que la ligne soit mise en verte.

Ce que je veux c'est qu'une fois cette ligne est passée en règlement et donc en vert, qu'elle ne puisse plus être modifiée lorsque la macro est relancée. Aujourd'hui, avec la Macro actuelle, je coche la case et la ligne passe en vert, mais lorsque la macro est relancée la ligne redevient sans couleur et la coche est décochée.

Merci de ton aide

Es-tu sure que la position de ligne ne changera jamais ou il faut ajouter une mémorisation ?
Sans clé unique de l'enregistrement ça sera plus compliqué..

En attendant, sans mémo.
Ni de cases à cocher, les objets sur feuille sont trop mal gérés, surtout s'ils deviennent nombreux (des fois plus de 10 et il commence à merdouilller)
Un double-clic en H fait une bascule. Ajout/retrait couleur et "oui"

J'ai modifié ta macro avec un .Clear au lieu du .ClearContents
Tu auras à reconstruire les MFC à chaque ajout
eric

bonsoir Eriiic, Lirane13,

Tu auras à reconstruire les MFC à chaque ajout

Sub Modifier_MFCs_Plages()
     Dim c, cLast, CF, cAr, cAr2, UN As Range
     With Sheets("recap")
          .Range("3:" & Rows.Count).FormatConditions.Delete     'supprimer toutes les MFC à partir de la ligne 3
          .Range("I1:I2").Resize(, Columns.Count - .Range("I1").Column + 1).FormatConditions.Delete     'supprimer toutes les MFCs à droite de I1:I2

          Set c = .Cells                     'la feuille complète
          Set cLast = .Range("A" & Rows.Count).End(xlUp).Offset(100)     'on va appliquer les MFCs jusqu'à la dernière ligne + 100 lignes supplémentaire

          For Each CF In c.FormatConditions  'boucler les MFCs
               On Error Resume Next
               s = "": s = CF.Formula1       'verifier la formule de la MFC, est-elle correcte ?
               On Error GoTo 0
               If Len(s) > 0 Then
                    Set UN = Nothing         'reset UN
                    For Each cAr In CF.AppliesTo.Areas     'boucles les areas de cette MFC
                         Set cAr2 = cAr.Resize(cLast.Row - cAr.Row + 1)     'agrandir l'area
                         If UN Is Nothing Then Set UN = cAr2 Else Set UN = Union(UN, cAr2)     'ajouter à l'UN
                         'MsgBox cAr.Address & vbLf & cAr2.Address & vbLf & UN.Address
                    Next
                    If Not UN Is Nothing Then CF.ModifyAppliesToRange UN     'si UN existe modifier la plage de la MFC
               End If
          Next
     End With
End Sub

Comme çà, vous avez vos MFC pour les lignes actuelles + 100 lignes supplémentaires

ça ne marche pas :(

Merci de votre aide en tout cas je vais réfléchir à une autre manière de faire

Bon courage

ça ne marche pas eriiic ou ça ne marche pas bart ?

Et ça marche pas ne veut rien dire....
Pour ma part j'ai testé avant de déposer le fichier et il fonctionne très bien

Rechercher des sujets similaires à "case cocher macro"