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 :

Développement de procédure à corriger


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut Développement de procédure à corriger
    Bonjour à tous les lecteurs:

    Dans un classeur j'ai une feuille nommée Feuille de base
    A l'aide d'une macro je duplique cette feuille pour ensuite la renommer manuellement en cellule B2

    A ce stade je bloque sur la procédure
    De plus je veux inclure une procédure si une feuille porte déjà le même nom

    Une fois le nom de la feuille inscrit on passe en cellule C3

    Suite de ma procédure qui est OK



    Ensuite dans un autre code je veux inclure le nom de ma nouvelle feuille que je récupère en cellule B2 pour l'inscrire en colonne A de ma feuille Liste Questionnaire

    Je doit inscrire le nom de ma nouvelle feuille en colonne A juste après la dernière cellule NON vide puisque à chaque nouvelle feuille on décale d'une cellule vers le bas.
    Je bloque sur ce point.

    Par avance je vous remercie pour aide.

    1ere Macro

    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
    Sub Nouveau_Thème()
    '
    'on rend visible la feuille de base
        Worksheets("Feuille de base").Visible = True
     
        'On sélectionne la feuille de base
            Sheets("Feuille de base").Select
            'On duplique la feuille de base
                Sheets("Feuille de base").Copy Before:=Sheets(3)
                'On se positionne sur la cellule "B2"
                    Range("B2").Select
                If MsgBox(" Veuillez Nommer votre thème en cellule B2!") Then
                    'Ecriture
                    'Instruction de validation
               SendKeys ("{ENTER}")
     
     'il faut gérer le cas d'une feuille portant déja le même nom
     
     
                    If MsgBox("Attention :  une feuille porte déja ce même nom" & Chr(10) & Chr(10) & "Veuillez attribuer un nouveau nom à cette feuille!!!") Then
     
                      'si ok on passe à la cellule C3 pour remplir le questionnaire
     
                'End If
                End If
            End If
       Contôle_remplissage
        'Nommer_Nouveau_questionnaire
        'Contrôle_Cellules
     
    End Sub
    2eme Macro

    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
    Sub Nommer_Nouveau_questionnaire()
        Dim resultat As String
     
        resultat = InputBox("Veuillez Nommer votre thème en cellule B2!", "Titre") 'La variable reçoit la valeur entrée dans l'InputBox
     
        If resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
            'MsgBox resultat
    'Je veux copier le nouveau nom que j'ai écrit dans l'InputBox en Cellule B
        Range("b2").Select
        'ActiveSheet.Paste
        Application.CutCopyMode = False
        End If
     
        'Contôle_remplissage
    End Sub
    Je reviendrai vers vous pour compléter en fonction de mes idées.

    Par avance je vous remercie.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Pour ce faire
    - copier la feuille
    - instruire une méthode InputBox (de type texte) dont le résultat sera mémorisé, exemple "lenom"
    - tester si une feuille de ce nom n'existe pas et boucler tant que le nom existe
    - lui affecter comme propriété Nom le résultat de l'InputBox (de type texte), soit la variable lenom
    - la cellule B2 étant affectée de la même valeur, lenom

    Pour ce faire, tu peux consulter ces 2 espaces
    Copier une feuille
    Méthode InputBox
    les boucles

    Attention, pour tester si une feuille existe, surtout ne pas boucler sur le nom de la collection des feuilles avec un Exit For.
    Mais plutôt

    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
    Public Function ExistFeuille(lenom As String) As Boolean
     
    Dim trouvéWks As Boolean
    Dim n As Long
     
    trouvéWks = False
    n = 1
     
    With ActiveWorkbook
            Do While n <= .Sheets.Count And trouvéWks = False
                    trouvéWks = (StrComp(.Sheets(n).Name, lenom, vbTextCompare) = 0)
                    n = n + 1
            Loop
    End With
     
    ExistFeuille = trouvéWks
     
    End Function
    Au demeurant, plusieurs variantes existent à ce sujet

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Ca veut dire quoi "renommer manuellement en cellule B2"?

    Que cherches-tu à réaliser? Ne l'explique pas par du code ou avec du langage Excel, mais comme si tu n'y connaissais rien et que tu devais rédiger un cahier des charges...

    Au passage, lorsque tu postes du code, sélectionne-le puis clique sur le bouton # des outils de mise en forme, ça aidera à y voir plus clair... Quoique.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 308
    Par défaut
    Bonsoir Pierre : Pardon je me suis mal exprimé. j'ai omis de dire que j'ai déjà une macro qui nomme ma feuille Lorsque j'inscris quelque chose en cellule B2.

    Méthode
    Je duplique une feuille nommée "Feuille de base" dans laquelle le nom de cette feuille est déjà présent en cellule B2.
    Dans la nouvelle Feuille dupliquée en cellule B2 je donne un nouveau nom dans B2 qui par macro renomme l'onglet.
    Dans une autre Feuille qui se nomme "Liste" je voudrais insérer le nom de cet onglet ou plutôt la valeur inscrite en cellule B2 de chaque nouvelle Feuille en colonne A mais de façon incrémentée en partant de A2

    Donc :exemple 1 en A2 le nom de la feuille nommée test 1
    :exemple 1 en A3 le nom de la feuille nommée test 2
    etc.

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

Discussions similaires

  1. Les procédures stockées développées ne s'affichent pas
    Par fatimafati dans le forum MS SQL Server
    Réponses: 17
    Dernier message: 19/05/2014, 16h46
  2. Réponses: 0
    Dernier message: 16/01/2013, 19h09
  3. Procédures de développement FRONT-END vs BACK-END
    Par Niaphron dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 11/01/2012, 16h47
  4. Procédure de validation des développements
    Par bdf94 dans le forum Qualité
    Réponses: 0
    Dernier message: 25/03/2009, 16h23

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