Code VBA pour quitter un ensemble de classeurs sans les enregistrer

Bonjour le Forum,

je suis à la recherche d'un code VBA qui fermerait un ensemble de classeurs ouverts, mais sans les enregistrer.

j'ai regardai sur le forum, j'en ai trouvé 1 , mais qui me ferme uniquement la feuille ou se trouve le code, mais pas les autres !

Voici le code :

Sub Fermeture_Classeurs()
' Fermeture_Classeurs Macro
'
Dim wb As Workbook
For Each wb In Workbooks
Application.DisplayAlerts = False
wb.Close SaveChanges:=False
Next wb
Application.Quit
End Sub

Peut être manque il quelque chose ?

Si quelqu'un a une solution, je suis preneur

Merci,

Cordialement;

Mamarus

Bonjour,

Je n'ai jamais essayé mais votre code parait pas mal. Essayez comme ça peut-être :

Sub Fermeture_Classeurs()

Dim wb As Workbook

with Application
    .DisplayAlerts = False
    For Each wb In .Workbooks
        wb.Close SaveChanges:=False
    Next wb
    .DisplayAlerts = True     
    .Quit
end with

End Sub

ou éventuellement comme ça pour fermer le fichier courant en dernier :

Sub Fermeture_Classeurs()

Dim wb As Workbook

with Application
    .DisplayAlerts = False
    For Each wb In .Workbooks
        if wb.fullname <> thisworkbook.name then
            wb.Close SaveChanges:=False
        end if
    Next wb
    Thisworkbook.close savechanges:=False
    .DisplayAlerts = True   
    .Quit
end with

End Sub

Cdlt,

Bonjour 3 GB,

Merci pour la solution, c'est la 1ère solution qui fonctionne.

C'est impeccable, je t'en remercie.

j'aurai une petite demande sur une formule que je n'arrive pas à faire, il s'agit de sortir le n° qui est le plus appelé.

un exemple : dans chaque cellule, un nombre

2 4 12 2 3 3 2 5 4 5 2

ici le N° qui reçoit le plus de citations est le n° 2.

la fonction qui permet de compter la frequence d'un n° est le NB.SI, mais comment dans une seule et même formule , extraire et faire apparaître le n° qui est le plus cité ?

Si vous avez une idée,

je vous en remercie .

Cordialement;

Mamarus

Bonjour,

Je n'ai pas vraiment d'idée précise alors je vous propose une fonction personnalisée en attendant éventuellement que vous obteniez meilleure réponse :

Function ChiffreFrequent(chaine As String) As Integer

Dim Expreg As Object
Dim subdiv As Object
Dim nb()
Dim i%, k%, frmax%

Set Expreg = CreateObject("vbscript.regexp")

With Expreg
    .Global = True
    .Pattern = "\d+"
    If Not .test(chaine) Then Exit Function
    Set subdiv = .Execute(chaine)
    ReDim nb(subdiv.Count - 1)
    For i = 0 To subdiv.Count - 1
        For k = 0 To subdiv.Count - 1
            If subdiv(i) = subdiv(k) Then
                nb(i) = nb(i) + 1
            End If
        Next k
        frmax = Application.Max(frmax, nb(i))
        If nb(i) = frmax Then ChiffreFrequent = subdiv(i)
    Next i

End With

End Function

A appeler sur feuille :

=ChiffreFrequent(A1)

Si la chaine à tester est en A1.

Edit : à noter que la fonction prendra le dernier chiffre le plus fréquent en cas d'égalité...

Cdlt,

Ok Merci,

je vais le tester

Cordialement;

Mamarus

Re bonsoir,

Je me suis mal exprimé certainement,

je suis en train de m'apercevoir qu'en fait ce n'est pas une chaine de caractère que l'on recherche, ce que l'on a, c'est que chaque N° est dans 1 cellule tout seul.

Nous avons en fait une ligne horizontale ou l'on a X cellules dont chacune contient un nombre. Il s'agit simplement de voir quel nombre revient le plus souvent sur l'ensemble des cellules.

Espérant avoir été plus clair;

Cordialement;

Mamarus

Re,

Oui, j'ai eu un petit doute mais en effet, je n'avais pas compris ça.

Est-ce que tu peux essayer cette formule, à valider en appuyant simultanément sur ctrl + shift + entrée :

=INDEX(A1:K1;EQUIV(MAX(NB.SI(A1:K1;A1:K1));NB.SI(A1:K1;A1:K1);0))

En considérant que tes données se trouvent en A1:K1 bien sûr.

Cdlt,

Bonjour à tous,

en fait il y a une fonction pour ça :

=MODE(A2:K2)

eric

Bonjour à vous 2,

Avec un peu de retard pour la réponse, sur la formule matricielle et sur la fonction mode, cela fonctionne pour les 2.

Je vous remercie pour votre collaboration,

Cordialement;

Mamarus

Rechercher des sujets similaires à "code vba quitter ensemble classeurs enregistrer"