[Résolu]code qui fait planté Excel

guillaum

XLDnaute Junior
Bonjour le Forum,

je cherche à activer une macro lorsque je change d'onglet. Le problème est que dès que je change d'onglet, tout tourne en boucle et Excel fini par planter.

Avez-vous une idée du pourquoi?

Merci.
 

Pièces jointes

  • probleme boucle.xlsm
    40.7 KB · Affichages: 50
Dernière édition:

néné06

XLDnaute Accro
Re : code qui fait planté Excel

Bonjour à tous,

Essayes comme ceci ?


Code:
Sub validation()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Sheets("Données ordonnées").Activate
    Sheets("Facture").Activate
    Application.EnableEvents = True
End Sub

A+

René
 

JCGL

XLDnaute Barbatruc
Re : code qui fait planté Excel

Bonjour à tous,

Peux-tu essayer ceci dans le module de la feuille Facture :

VB:
Private Sub Worksheet_Activate()
    ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:= _
                             "=OFFSET('Données ordonnées'!R2C2,,,COUNTA('Données ordonnées'!R2C2:R100C2))"
    Lig = Sheets("Données ordonnées").Range("B" & Rows.Count).End(xlUp).Row
    With Range("E2:F2").validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=Liste"
    End With
    Call validation
End Sub

A+ à tous
 

guillaum

XLDnaute Junior
Re : code qui fait planté Excel

Bonjour Jean-Marcel et néné06,

Merci pour vos retours, la macro validation me sert à valider le tri qui se fait entre la feuille 'données brutes' et la feuille 'données ordonnées', sauf que je souhaite automatiser cette macro sans avoir besoin de passer par un bouton (ce qui était le cas jusqu'à présent).

Pour information la feuille 'données ordonnées' est masquée. Ce n'est pas moi qui utilise ce fichier et je souhaite qu'il soit le plus simple possible pour l'utilisateur.

Je viens de tester ton code néné06 et quand j'ajoute un 'client' et que je vais sur la feuille 'Facture', cela ne l'ajoute pas dans la liste déroulant en E2.

Je vous remercie déjà pour votre aide, maintenant je comprend le problème de boucle.

Guillaum.
 

guillaum

XLDnaute Junior
Re : code qui fait planté Excel

Bonjour JCGL,

Merci pour cette aide, cela ne rajoute pas dans la liste déroulante en E2 de la feuille 'Facture'.

Guillaum.

Bonjour à tous,

Peux-tu essayer ceci dans le module de la feuille Facture :

VB:
Private Sub Worksheet_Activate()
    ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:= _
                             "=OFFSET('Données ordonnées'!R2C2,,,COUNTA('Données ordonnées'!R2C2:R100C2))"
    Lig = Sheets("Données ordonnées").Range("B" & Rows.Count).End(xlUp).Row
    With Range("E2:F2").validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=Liste"
    End With
    Call validation
End Sub

A+ à tous
 

JCGL

XLDnaute Barbatruc
Re : code qui fait planté Excel

Bonjour à tous,

Et pourtant...
Chez moi les données sont rajoutées par :

ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:= _
"=OFFSET('Données ordonnées'!R2C2,,,COUNTA('Données ordonnées'!R2C2:R100C2))"

Rajoute une donnée en feuille Données Brutes et active Données Ordonnées et Facture.

A+ à tous
 

Pièces jointes

  • JC Probleme Boucle.xlsm
    36.9 KB · Affichages: 24

JCGL

XLDnaute Barbatruc
Re : code qui fait planté Excel

Bonjour à tous,

Peux-tu essayer dans le module de la feuille "Facture" :

VB:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Sheets("Données ordonnées").Visible = True
    Dim Plg As Range
    With Sheets("Données ordonnées")
        .Parent.Worksheets("Données brutes").Columns("A:M").Copy destination:=.Range("A1")
        Set Plg = .Columns("A:M").Resize(.Cells(.Rows.Count, "B").End(xlUp).Row - 1, 13).Offset(1)
        With .Sort
            With .SortFields
                .Clear
                .Add Key:=Plg.Cells(1, 2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            End With
            .SetRange Plg
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
    Application.ScreenUpdating = True
    Sheets("Données ordonnées").Visible = False


    ActiveWorkbook.Names.Add Name:="Liste", RefersToR1C1:= _
                             "=OFFSET('Données ordonnées'!R2C2,,,COUNTA('Données ordonnées'!R2C2:R100C2))"
    With Range("E2:F2").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=Liste"
    End With
End Sub


Tu enlèves TOUT le reste (le code en feuille "Données Ordonnées" et le module standard)

A+ à tous
 

guillaum

XLDnaute Junior
Re : code qui fait planté Excel

Bonjour à tous,

@ JCGL: j'ai supprimé tout le code que tu m'a indiqué et copier le code que tu as fait et cela fonctionne très bien!

Je tiens à tous vous remercier pour votre aide qui me permet d'avancer et d'apprendre encore plus de choses en examinant tous vos codes.

Un grand MERCI.

Guillaum.
 

Discussions similaires

Réponses
5
Affichages
194
Réponses
26
Affichages
361

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley