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 :

macro feuille precedent sous condition de feuille existante [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Points : 31
    Points
    31
    Par défaut macro feuille precedent sous condition de feuille existante
    Bonsoir a tous !

    Je viens vers vous (pour la énième fois...) car j'ai besoin de vos connaissances.

    J'ai créer des boutons (1 pour chaque action) sur ma feuille qui me permettent:

    Soit de descendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.SmallScroll:=2
    Soit de monter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWindow.SmallScroll:=-2
    Soit de passer au feuillet suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Next.select
    Soit de passer au feuillet précedent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Previous.select
    Cependant, sans condition cela plante (exemple: cliquer sur le bouton précédent si pas de feuillet avant et réciproquement pour le next si pas de feuillet après.

    1ere question:
    Par conséquent, quelqu'un pourrait-il m'aider afin que je puisse generer ce code afin de ne pas avoir ces plantages?

    exemple en francais (pour le precedent):
    Sub Precedent()
    If "il existe un feuillet avant " Then
    ActiveSheet.Previous.select
    sinon rien
    End Sub

    exemple en francais (pour le suivant):
    Sub Suivant()
    If "il existe un feuillet suivant " Then
    ActiveSheet.Previous.select
    sinon rien
    End Sub

    Sinon evidement, l'idéale serait de copier la feuille active dans la feuille suivante (mais ça je pense pouvoir le faire avec la fonction creation de macro en etudiant le code generer...je vais voir ça plus tard...).

    J'ai le même probleme dans le cas de ma fonction pour descendre car il faudrait que je puisse "bloquer" la descente a la ligne 70 dans mon cas...
    Je pense qu'un If..Then devrait convenir ou alors un ActiveWindow.SmallScroll:=2 "jusqu'à ligne70.
    Mais bon là je sors de mes competences...

    Voila.

    J'espere ne pas trop en demander...Si c'est le cas n'ésitez pas à me le dire !!(je comprendrais..)

    Merci d'avance.

    Cordialement

    Manu

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Points : 730
    Points
    730
    Par défaut
    Dans Excel tu peut traiter les codes d'erreur.
    Regarde l'aide en ligne de cela devrait t'aider.

    Si ce n'est pas clair, ... developpez.com

    PPz

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Bonsoir PPz78,

    Ok, je vais regarder ça de suite .

    Et merci pour ton aide !

    Amicalement

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Re,

    Bon, après réflexion et recherche, je change de méthode (plus "propre" je dirais).
    Par contre je bloque sur une expression.

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub creation_feuil_suivante_si ()
     
         If activesheet.next=true then 'si feuil suivante existe alors
         goto fin_de_procedure
         else:activesheet.copy after=sheets(1)
         end if
         fin_de_procedure:
         activesheet.next.select
     
    End sub
    Le problème est que je n'arrive pas a écrire "si feuil suivante existe"...
    Je pensais qu'avec un "= true" cela marcherai mais se n'est pas le cas...
    Selon vous quelle est la structure pour dire cela?

    Merci d'avance pour vos commentaires.

    Cordialement

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Re,

    Je pense a la creation d'un boolean genre(logique si il y a un "true"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub creation_feuil_suivante_si ()
         dim x as boolean
         x= activesheet.next
         If x=true then 'si feuil suivante existe alors
         goto fin_de_procedure
         else:activesheet.copy after=sheets(1)
         end if
         fin_de_procedure:
         activesheet.next.select
     
    End sub
    Mais toujours plantage...
    Le probleme vient de la nommation (si c'est français) de "feuille suivante".

    Je ne vois pas comment on nomme la feuille suivante dans ce type d'instruction?

    Cordialement

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Bon, je suis un boulet....

    En effet, l'utilisation de "on error resume next" convient parfaitement...
    Conclusion:la prochaine fois je chercherai plus avant de poser une question inutile.

    Bref, je vous prie de m'excuser (particulièrement PPz78 qui m'a donné la solution dès le début....).

    Excusez moi encore...je mériterais d'etre ....

    Bonne soirée et bon courage pour demain.
    Et merci pour la solution PPz78.

    Sujet resolu.

    Cordialement

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Re,

    Notification:Mea-culpa

    En effet, après tests et réflexions voici mon code fonctionnel (grâce en autres à PPz78 et mon ami "F8"....)

    Code:

    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
    Sub Suivant_creation_new_feuil()
     
        On Error Resume Next
        ActiveSheet.Next.Select
     
     
            If ActiveSheet.Name = "1 à 25" Then
        ActiveSheet.Copy After:=Sheets("1 à 25")
        Range("A10:A11").Select
        ActiveCell.FormulaR1C1 = "26"
        Selection.AutoFill Destination:=Range("A10:A59"), Type:=xlFillDefault
        Range("A10:A59").Select
        Sheets(2).Select
        Sheets(2).Name = "26 à 50"
     
            ElseIf ActiveSheet.Name = "26 à 50" Then
        ActiveSheet.Copy After:=Sheets("26 à 50")
        Range("A10:A11").Select
        ActiveCell.FormulaR1C1 = "51"
        Selection.AutoFill Destination:=Range("A10:A59"), Type:=xlFillDefault
        Range("A10:A59").Select
        Sheets(3).Select
        Sheets(3).Name = "51 à 75"
     
            ElseIf ActiveSheet.Name = "51 à 75" Then
        ActiveSheet.Copy After:=Sheets("51 à 75")
        Range("A10:A11").Select
        ActiveCell.FormulaR1C1 = "76"
        Selection.AutoFill Destination:=Range("A10:A59"), Type:=xlFillDefault
        Range("A10:A59").Select
        Sheets(4).Select
        Sheets(4).Name = "75 à 100"
     
            Else: GoTo Fin_de_procedure
     
            End If
     
    Fin_de_procedure:
     
    End Sub
    Bref, tout ça pour dire que la prochaine fois je m'abstiendrais de pas reflechir.......Encore une fois je vous prie de m'excuser pour mes messages précedents...

    Amicalement

    n.b:Si vous avez des suggestions sur mon code je suis bien évidement preneur.

    Bonne nuit a vous

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

Discussions similaires

  1. Macro Excel Somme sous condition
    Par nduverger dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/11/2014, 19h13
  2. [XL-2007] Macro copier coller sous condition date
    Par isolf dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/07/2014, 18h32
  3. [XL-2007] Macro répétitive exécutée sous condition
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/11/2013, 11h01
  4. [XL-2007] Macro clignotement cellule sous condition
    Par CALIDENIS dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/11/2013, 10h52
  5. [VBA-E]feuille créée sous condition
    Par Angel79 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2006, 15h11

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