Onglet masqué vs macro

  • Initiateur de la discussion Initiateur de la discussion landry81
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

landry81

Guest
Bonsoir tout le monde,
Je me retourne vers vous après avoir fait de nombreuses recherches en vain...
Mon problème concerne l'exécution d'une macro avec un onglet masqué. J'ai lu dans diverses conversations de forum qu'il fallait utiliser des actions plutôt que des .select (ce que je me suis efforcé de faire)
Code:
Dim j As Long
     Dim plage2 As Range
                Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").Range("A2").End(xlDown).Row)
        For j = plage2.Cells.Count To 1 Step -1
         If plage2.Cells(j).Value = Range("archive_ref").Value Then
            plage2.Cells(j).EntireRow.Cut
            Worksheets("archive").Range("A65536").End(xlUp).Offset(1, 0).Select
            ActiveSheet.Paste
             End If
        Next
Cependant ce code est sur un bouton, il fonctionne très bien lorsque l'onglet "listing" est affiché, et ne fait plus rien lorsqu'il est masqué !!!
Quelqu'un pourrait il me dire où se trouve mon erreur ???
merci 🙂
 
Re : Onglet masqué vs macro

Salut landry,
votre erreur se situe au niveau de l'écriture de cells(Ligne,Colonne). Il faut donner 2 arguments à la propriété cells.
VB:
Dim j As Long
Dim plage2 As Range

Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").Range("A2").End(xlDown).Row)
For j = plage2.Cells.Count To 1 Step -1
    If plage2.Cells(j, 1).Value = Range("archive_ref").Value Then
        plage2.Cells(j, 1).EntireRow.Cut
        Worksheets("archive").Range("A65536").End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
    End If
Next

La propriété cells sert à détermier la position d'une cellule, exactement comme un range, sauf qu'elle inverse les lignes et les colonnes.
Par exemple : Range("B5") s'écrira Cells(5,2)

Bonne continuité,

Étienne
 
Re : Onglet masqué vs macro

Salut étienne,
merci pour ta réponse aussi rapide. J'ai pris note de ta remarque et j'ai effectué la modification.
Malheureusement, cela ne fonctionne toujours pas. C'est vraiment toujours le même problème. Lorsque l'onglet "listing" est masqué j'arrive plus à faire mon couper/coller.
 
Re : Onglet masqué vs macro

Bonsoir landry81, Etienne2323 🙂

landry, le code que t'a indiqué Etienne (que je salue bien bas 🙂 ) fonctionne parfaitement chez moi, ton problème vient peut-être d'ailleurs ?
Tu ne donnes qu'une partie de la macro, donc on ne peut pas dire grand chose, et par ailleurs tu ne donnes pas d'extrait de fichier, donc on ne peut pas tester non plus (ça fait beaucoup 😀)

Le mieux serait que tu joignes un extrait de ton fichier (sans données confidentielles) on y verra certainement plus clair pour te venir en aide.

Bonne soirée à tous,

mth
 
Re : Onglet masqué vs macro

Bonsoir à tous
Sans support, on sort la boule de cristal.
Code:
[COLOR=DarkSlateGray][B]Sub toto()
Dim j As Long
Dim plage2 As Range
  Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").Range("A2").End(xlDown).Row)
  For j = plage2.Cells.Count To 1 Step -1
    If plage2.Cells(j, 1).Value = Range("archive_ref").Value Then
      plage2.Cells(j, 1).EntireRow.Cut Destination:=Worksheets("archive").Range("A65536").End(xlUp).Offset(1, 0)
    End If
  Next
End Sub[/B][/COLOR]
ROGER2327
#4580


Samedi 21 As 138 (Saint Possible, schizophrène, SQ)
3 Frimaire An CCXIX
2010-W47-2T23:06:34Z
 
Re : Onglet masqué vs macro

Salut à tous
Code:
Dim j As Long
Dim plage2 As Range

Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").Range("A2").End(xlDown).Row)
For j = plage2.Cells.Count To 1 Step -1
    If plage2.Cells(j) = Range("archive_ref") Then
        plage2.Cells(j).EntireRow.Cut Worksheets("archive").Range("A65536").End(xlUp).Offset(1, 0)
    End If
Next
A+

Edit : encore ROGER2327 qui m'a grillé ^^
 
Re : Onglet masqué vs macro

Bonjour à tous,
voici l'intégralité de ma macro :
Code:
Sub Archiver()

Worksheets("Audit").Unprotect ""
Worksheets("Archive").Unprotect ""



If MsgBox("Opération irréversible. Souhaitez-vous continuez ?", vbExclamation + vbYesNo, "         !!! ATTENTION !!!") = vbYes Then
If Range("archive_ref").Value = "" Then
Else
     Dim j As Long
     Dim plage2 As Range
            Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").Range("A2").End(xlDown).Row)
        For j = plage2.Cells.Count To 1 Step -1
         If plage2.Cells(j, 1).Value = Range("archive_ref").Value Then
            plage2.Cells(j, 1).EntireRow.Cut
            Worksheets("archive").Range("A65536").End(xlUp).Offset(1, 0).Select
            ActiveSheet.Paste
         End If
        Next
     
    Dim i     As Long
    Dim Plage As Range
            Set Plage = Worksheets("audit").Range("A6:A" & Worksheets("audit").Range("A6").End(xlDown).Row)
        For i = Plage.Cells.Count To 1 Step -1
         If Plage.Cells(i).Value = Range("archive_ref").Value Then
            Plage.Cells(i).EntireRow.Delete
         End If
        Next
End If
End If

Range("archive_ref").Value = ""
Range("A7").Select

Worksheets("Audit").Protect "", True, True, True
Worksheets("Archive").Protect "", True, True, True
  End Sub

sachant que "archive_réf" est une cellule comportant une liste. Comme vous pouvez le voir toutes les feuilles sont protégés sauf l'onglet listing qui est masqué.
Ensuite seule la partie de la macro que j'ai donné plus haut ne fonctionne qu'avec l'onglet "listing" affiché.
Merci beaucoup pour votre aide 🙂
 
Re : Onglet masqué vs macro

en effet j'ai déjà essayé de rajouter le "démasquage" puis "remasquer" mais ça n'a aucune influence. Voici le code que j'avais essayé :
Code:
Sub Archiver()

Worksheets("Audit").Unprotect ""
Worksheets("Archive").Unprotect ""

If MsgBox("Opération irréversible. Souhaitez-vous continuez ?", vbExclamation + vbYesNo, "         !!! ATTENTION !!!") = vbYes Then
If Range("archive_ref").Value = "" Then
Else
   Worksheets("listing").Visible = True
   Dim j As Long
     Dim plage2 As Range
            Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").Range("A2").End(xlDown).Row)
        For j = plage2.Cells.Count To 1 Step -1
         If plage2.Cells(j).Value = Range("archive_ref").Value Then
            plage2.Cells(j).EntireRow.Cut
            Worksheets("archive").Range("A65536").End(xlUp).Offset(1, 0).Select
            ActiveSheet.Paste
         End If
        Next
     
    Dim i     As Long
    Dim Plage As Range
            Set Plage = Worksheets("audit").Range("A6:A" & Worksheets("audit").Range("A6").End(xlDown).Row)
        For i = Plage.Cells.Count To 1 Step -1
         If Plage.Cells(i).Value = Range("archive_ref").Value Then
            Plage.Cells(i).EntireRow.Delete
         End If
        Next
End If
End If

Range("archive_ref").Value = ""
Range("A7").Select

Worksheets("listing").Visible = False
Worksheets("Audit").Protect "", True, True, True
Worksheets("Archive").Protect "", True, True, True
  End Sub

ou bien je l'effectue d'une mauvaise manière ??
 
Re : Onglet masqué vs macro

bonjour ROGER2327,
oui j'ai testé toutes vos solutions. Etant débutant en excel je suis les conseils que l'on peut me donner à la lettre. C'est aussi pour cela que j'ai mis le code en entier de la macro (suite à votre remarque de manque de support).
Je suis prêt à tester des solutions, et je prend en compte toute les remarques et conseil que l'on me fait. Je veux comprendre pourquoi j'ai cette erreur et comment y remédier. C'est pour cela que je viens sur ce forum qui m'avait déjà dépatouillé d'une petite erreur il y a quelque mois, où j'ai l'impression d'être avec des gens compétent (je pense pas me tromper 🙂 )
Par avance merci du temps que vous me consacrez et de l'aide que vous me donnez tous !
 
Re : Onglet masqué vs macro

Salut andry81 et le forum
Je veux comprendre pourquoi j'ai cette erreur et comment y remédier.
Quelle erreur ?
A+
Edit :
Code:
Sub Archiver()
Dim j As Long, i As Long
Dim plage2 As Range, Plage As Range

Worksheets("Audit").Unprotect ""
Worksheets("Archive").Unprotect ""

If MsgBox("Opération irréversible. Souhaitez-vous continuez ?", vbExclamation + vbYesNo, _
                                                "         !!! ATTENTION !!!") = vbYes Then
    If Range("archive_ref").Value <> "" Then
        Set plage2 = Worksheets("listing").Range("A2:A" & Worksheets("listing").[A2].End(xlDown).Row)
        For j = plage2.Cells.Count To 1 Step -1
            If plage2.Cells(j) = Range("archive_ref") Then _
                plage2.Cells(j).EntireRow.Cut _
                    Worksheets("archive").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        Next
        
        Set Plage = Worksheets("audit").Range("A6:A" & Worksheets("audit").[A6].End(xlDown).Row)
        For i = Plage.Cells.Count To 1 Step -1
            If Plage.Cells(i) = Range("archive_ref") Then Plage.Cells(i).EntireRow.Delete
        Next
    End If
End If

Range("archive_ref") = ""
Range("A7").Select

Worksheets("Audit").Protect "", True, True, True
Worksheets("Archive").Protect "", True, True, True
End Sub
La même, mais mieux arrangée.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
730
Réponses
5
Affichages
909
Réponses
2
Affichages
673
Réponses
0
Affichages
655
Réponses
2
Affichages
588
Réponses
5
Affichages
687
Retour