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 :

Aide à simplifier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Par défaut Aide à simplifier
    bonjour à tous ou bonsoir c'est selon
    alors voila j'ai réussis à créer ma macro VBA pour mon projet, mon seul problème est que cette macro je devrais la copier 80 fois...
    Je m'explique en fait ma macro rempli une ligne avec des informations via inputbox, le problème c'est que j'ai 80 lignes différentes et je voudrais ne pas faire 80 macro en changeant juste les cellule de destination...
    voici mon code qqun a une idée ?

    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
    Sub remplir201A()
    Range("D4:M4").Interior.ColorIndex = 45
    If MsgBox("Etes-vous certain de vouloir remplir la ligne en orange ?", vbYesNo, "Demande de confirmation") = vbNo Then
            Range("D4:M4").Interior.ColorIndex = 0
            Else
             Range("D4:M4").Interior.ColorIndex = 0
        nom = InputBox("Veuillez introduire le nom du détenu" & vbCrLf & "(en minuscule car les majuscules sont automatiques)", "Nom du détenu", "Nom du détenu", vbOKCancel)
      Range("D4").Value = UCase(nom)
      If reponse = vbCancel Then Exit Sub
      If Range("D4") = "" Then GoTo fin
      prénom = InputBox("Veuillez introduire le prénom du détenu" & vbCrLf & "(en minuscule car les majuscules sont automatiques)", "Prénom du détenu", vbOKCancel)
      Range("E4").Value = UCase(prénom)
      If reponse = vbCancel Then Exit Sub
      If Range("E4") = "" Then GoTo fin
     Dim value1 As String
    value1 = InputBoxCombo("Veuillez introduire la catégorie du détenu, cliquez pour obtenir les différents choix", Array("PC", "CC", "INT", "AA", "AE"), _
                            "Catégorie", , , , , , , vbBlack, RGB(246, 246, 246), "Arial", 12)
    Range("F4").Value = value1
    If Range("F4") = "" Then GoTo fin
    Dim value2 As String
    value2 = InputBoxCombo("Veuillez introduire le régime alimentaire du détenu, cliquez pour obtenir les différents choix", Array("ORD", "MUS", "VG", "MUS/DIA", "DIA"), _
                            "Régime alimentaire", , , , , , , vbBlack, RGB(246, 246, 246), "Arial", 12)
    Range("G4").Value = value2
    If Range("G4") = "" Then GoTo fin
    Dim date1 As Date
    date1 = InputBoxDate("Introduisez la date de naissance du détenu." & vbCrLf & "Tapez la date dans la zone de texte ou aidez vous du calendrier ci-dessous.", "Date de naissance du détenu", Now(), , , , , , , _
                         "Arial", 12, "Arial", 12, True, "Arial", 12)
    Range("I4").Value = date1
    If Range("I4") = "" Then GoTo fin
    Dim date2 As Date
    date2 = InputBoxDate("Veuillez introduire la date de début d'incarcération du détenu" & vbCrLf & "Tapez la date dans la zone de texte ou aidez vous du calendrier ci-dessous.", "Date d'incarcération du détenu", Now(), , , , , , , _
                         "Arial", 12, "Arial", 12, True, "Arial", 12)
    Range("J4").Value = date2
    If Range("J4") = "" Then GoTo fin
      motif = InputBox("Veuillez introduire le motif d'incarcération du détenu", "Date de début d'incarcération du détenu")
      Range("K4").Value = motif
    fin:
    End If
    End Sub

  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
    Bonsoir
    Oriente toi plutôt vers l'utilisation d'un userform comme interface de saisie.
    Regarde le tuto pour cela et la FAQ.

    Tu auras plus de flexibilité qu'une suite d'inputbox.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Par défaut
    oui mais même avec un userform je devrai en créer 80 alors le problème reste le même non ?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi 80 ?
    Qu'il y ai 1 ou 200 enregistrements dans une liste de données contenu dans une feuille, on rempli les informations à l'aide d'un formulaire (USERFORM) et ensuite on va écrire ces informations à la première ligne vide dans la liste. Exactement comme on le ferait manuellement.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 9
    Par défaut
    à mon avis je m'exprime mal...
    en fait j'ai 80 plages soit une plage A4 à Q4, une plage a5 à Q5 et ainsi de suite
    la macro que j'ai remplit a4 à Q4, je copie la macro pour remplir a5 à Q5 cela me fait 80 macro... au final ca me fait 80 macros je voudrais savoir si je savais en créer une seule qui puisse gérer les 80 plages ...

  6. #6
    Invité
    Invité(e)
    Par défaut
    bonjour,
    pourquoi ne pas passer la plage à ta sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub remplir201A(Plage as range)
    comme ça tu utilise la même sub mais à 80 reprise.

Discussions similaires

  1. Aide pour Simplifier/optimiser une requête SQL
    Par bubu06 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/05/2012, 18h25
  2. Besoin d'aide pour simplifier fonction
    Par mims1664 dans le forum jQuery
    Réponses: 6
    Dernier message: 10/10/2010, 20h57
  3. aide pour simplifier vba
    Par David1259 dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/01/2009, 10h25
  4. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15
  5. aide simplifié VBS
    Par al777 dans le forum VBScript
    Réponses: 2
    Dernier message: 30/03/2007, 00h39

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