IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Faire une boucle Do Loop Until [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Météorologiste
    Inscrit en
    Octobre 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Météorologiste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2010
    Messages : 60
    Par défaut Faire une boucle Do Loop Until
    Bonjour,

    J'essaie de faire une macro où je cherche si un onglet existe et s'il n'existe pas, je le créé sinon je lui ajoute un numéro. mon soucis, c'est que ma macro tourne en boucle indéfiniment et je ne comprends pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Public Function FeuilleExiste(ByVal StrNomFeuille As String) As Boolean
    FeuilleExiste = Not (IsError(Evaluate("=" & StrNomFeuille & "!A1")))
    End Function
     
    Sub ARCHIVER()
    Dim a As Integer
    a = 1
    If FeuilleExiste(Feuil1.Range("G2")) = False Then 'Si la feuille existe
        If FeuilleExiste(Feuil1.Range("G2") & "_" & a) = False Then 'Si la feuille existe
        Do
        a = a + 1
        Loop Until FeuilleExiste(Feuil1.Range("G2") & "_" & a) = True
        Sheets.Add.Name = Feuil1.Range("G2") & "_" & a
        Else
        Sheets.Add.Name = Feuil1.Range("G2") & "_" & a
        End If
    Else
    Sheets.Add.Name = Feuil1.Range("G2") 'Si la feuille n'existe pas
    End If
    End Sub
     
    Pouvez-vous m'éclairer s'il vous plait ?

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une autre approche semblable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub ARCHIVER()
    Dim Nom As String, Suf As String
    Dim i As Integer
     
    Nom = Feuil1.Range("G2").Value
    Do Until Not FeuilleExiste(Nom & Suf)
        i = i + 1
        Suf = "_" & CStr(i)
    Loop
    ThisWorkbook.Worksheets.Add.Name = Nom & Suf
    End Sub
     
    Private Function FeuilleExiste(ByVal Str As String) As Boolean
     
    On Error Resume Next
    FeuilleExiste = ThisWorkbook.Sheets(Str).Index > 0
    End Function

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [XL-2003] Besoin d'aide pour faire une boucle loop sur une macro
    Par spacesheep dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2010, 11h42
  3. Problème avec une boucle Do.. Loop Until
    Par gta126 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 29/12/2007, 11h27
  4. Réponses: 2
    Dernier message: 01/08/2005, 16h55
  5. Comment faire une boucle ???
    Par HookerSeven dans le forum Access
    Réponses: 6
    Dernier message: 17/06/2005, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo