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 :

Blocage sur une macro [Toutes versions]


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
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 65
    Par défaut Blocage sur une macro
    Bonjour,

    Je suis en train de créer une macro qui doit effectuer les instructions suivantes ;
    Macro3

    Créer une macro qui permet :

    D'ajouter une feuille
    De la renommer en "macro3"
    Cette macro devra copier les lignes relatives aux produits dont le prix est supérieur à 100 de la feuille "produit" vers cette feuille

    Cette macro devra s'arrêter du fait d'une boucle conditionnelle.

    J'ai réussi à faire la première partie : (ou du moins je pense)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub macro3()
      Sheets.Add After:=Sheets("prix")
      Worksheets("Feuil3").Name = "Macro3" 'écriture pour ajouter une feuille nommée
    End Sub
    néanmoins j'ai vu que ça ne fonctionne qu'une seule fois.

    Comment faire pour que _ça marche tout le temps?

    Par contre je suis bloquée pour la deuxième partie et pour la mettre sous la forme d'une boucle conditionnelle (au cas où, vous pourrez trouver le fichier excel afin de visualiser plus facilement).

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible avec ce code dans le fichier joint.


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Sub Macro3()
     
    Dim Continuer As Boolean
    Dim ShMacro3 As Worksheet
    Dim ShPrix As Worksheet
    Dim DerniereLignePrix As Long
    Dim LigneDeTitrePrix As Long
    Dim ListeDesProduits As Range
     
     
        Set ShPrix = Sheets("prix")
        With ShPrix
            LigneDeTitrePrix = 1
            DerniereLignePrix = .Cells(.Rows.Count, 1).End(xlUp).Row
     
            If DerniereLignePrix > LigneDeTitrePrix Then
     
                    Set ListeDesProduits = .Range(.Cells(LigneDeTitrePrix + 1, 1), .Cells(DerniereLignePrix, 1))
                    Continuer = False
                    For Each ShMacro3 In Sheets
                        If ShMacro3.Name = "Macro3" Then Continuer = True
                    Next ShMacro3
     
                    If Continuer = True Then
                        Sheets("Macro3").Cells.Clear
                        Set ShMacro3 = Sheets("Macro3")
                    Else
                       Set ShMacro3 = Sheets.Add(After:=ShPrix)
                       ShMacro3.Name = "Macro3"
                    End If
     
                    CopierLesProduitsSuperieursA100 ShMacro3, ListeDesProduits, 100#
     
                    Set ShMacro3 = Nothing
                    Set ListeDesProduits = Nothing
     
             End If
        End With
     
     
    End Sub
     
     
    Sub CopierLesProduitsSuperieursA100(ByVal FeuilleCible As Worksheet, ByVal AireProduits As Range, ByVal ValeurSeuil As Single)
     
    Dim Cellule As Range
    Dim LigneEnCours As Long
     
     
        With FeuilleCible
             .Range(.Cells(1, 1), .Cells(1, 2)) = Array("Produits", "Prix")
             LigneEnCours = 2
             For Each Cellule In AireProduits
                 If Cellule.Offset(0, 1) >= ValeurSeuil Then
                    .Cells(LigneEnCours, 1) = Cellule
                    .Cells(LigneEnCours, 2) = Cellule.Offset(0, 1)
                    LigneEnCours = LigneEnCours + 1
                 End If
             Next Cellule
        End With
     
    End Sub
    Cordialement.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 65
    Par défaut
    Bonsoir,

    Merci pour votre aide.

    Cordialement

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Ce serait préférable que les questions sur les macros soient mises dans le forum VBA-Excel et pas dans le forum Excel tout court.

    C'est également une (très) bonne idée de cliquer sur le lien qui indique que la question est résolue, quand tu as eu la réponse qui te convient.

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

Discussions similaires

  1. [VBA] Menu qui pointe sur une macro contenue dans un fichier xla protégé
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2007, 14h34
  2. petite aide sur une macro pour transfere de valeur
    Par fpouzou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/06/2007, 16h54
  3. [68HC11] Blocage sur une boucle
    Par paterson dans le forum Autres architectures
    Réponses: 3
    Dernier message: 10/11/2006, 20h45
  4. blocage sur une méthode synchronized
    Par rockelite dans le forum Général Java
    Réponses: 3
    Dernier message: 03/05/2006, 22h28
  5. Faire un undo sur une macro
    Par cbonnard dans le forum Général VBA
    Réponses: 15
    Dernier message: 19/10/2005, 17h19

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