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 :

VBA - Remplir n cellules selon la variable n [XL-2013]


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
    Mai 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 52
    Par défaut VBA - Remplir n cellules selon la variable n
    Bonjour,

    Je souhaite remplir n cellules selon une variable n entrée par l'utilisateur.

    Enfaites, si l'utilisateur entre n=10 alors je souhaite à partir de la cellule A1 remplir les cellules A1:J1 par
    a,b,c,d,e,f,g,h,i,j (les lettres de l'alphabet).

    Si n=26 alors les cellules A1:Z1 seront remplies chacune par les lettres de l'alphabet a à z.

    Pouvez-vous me donnez un coup de main svp.

    Je vous remercie par avance.
    Cordialement,

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    un exemple, pas le plus concis

    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
    Sub Lettres()
    Dim NbLettres As Integer
    Dim Reponse As String
     
    Reponse = InputBox("Combien de lettres voulez-vous?")
    On Error GoTo handler
    NbLettres = CInt(Reponse)
    On Error GoTo 0
     
    If NbLettres > 26 Or NbLettres < 1 Then
        MsgBox ("Veuillez saisir un chiffre entier entre 1 et 26")
        Exit Sub
    Else
        For i = 1 To NbLettres
            ' remplacer 64 par 96 pour avoir des lettres minuscules
            ' inverser le 1 et le i de "cells()" pour écrire en colonne
            Sheets("Feuil1").Cells(1, i) = Chr(64 + i)
        Next i
    End If
     
    Exit Sub
    handler:
    MsgBox ("Veuillez saisir un chiffre entier entre 1 et 26")
    End Sub

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 52
    Par défaut
    Merci joe.levrai.

    C'est bien ce que je voulais.

    Je vous remercie pour votre aide.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Même si c'est résolu, je me permets une suggestion sur la saisie du NbLettres qui peut être bien simplifiée, sur la base de la solution proposée par http://www.developpez.net/forums/u532401/joe-levrai/.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    While NbLettres < 1 Or NbLettres > 26
     
            NbLettres = Application.InputBox("Nb lettres (1-26)?", Errinp, Type:=1)
            Errinp = "/!\ Erreur de saisie!"
     
        Wend

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    avec ta proposition, on doit à nouveau vérifier que NbLettres est un Integer ou alors utiliser la partie entière (ou l'arrondi)

    1.2 sera considéré comme valide

    et si tu as déclaré NbLettre en Integer, il faut gérer l'erreur d'incompatibilité de type

    ça donnerait quoi avec un code complet ?

    j'aime regarder les propositions périphériques, ça donne toujours des nouvelles idées

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour Joel,

    L'utilisation du Application.InputBox n'est pas complète dans mon exemple, c'est vrai

    J'ai juste rajouté mon commentaire pour deux raisons:
    - Utilisation plus sympa du Application.InputBox
    - Possibilité d'intégrer le message d'erreur dans la boucle sans traitement spécifique, puisque la chaine Errinp ne vaut rien au 1ere passage, mais s'affiche ensuite

    Un code plus complet serait:
    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
    Sub Lettres_Vinc()
    Dim NbLettres As Single, i As Integer
    Dim Reponse As String
     
    On Error GoTo Err_handler
     
    While NbLettres < 1 Or NbLettres > 26 Or NbLettres <> CInt(NbLettres)
     
        NbLettres = Application.InputBox("Nb lettres (1-26)?", Errinp, Type:=1)
        Errinp = "/!\ Erreur! Entier entre 1 et 26"
     
    Wend
     
     
    For i = 1 To NbLettres
        Sheets("Feuil1").Cells(1, i) = Chr(64 + i)
    Next i
     
     
    Exit Sub
    Err_handler:
        If err.Number <> 0 Then
            MsgBox "Error " & err.Number & ": " & vbCrLf & err.Description, vbCritical
            err.Clear
        End If
     
    End Sub

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

Discussions similaires

  1. [XL-2013] VBA - Afficher des résultats selon les variables demandés par l'utilisateur
    Par JOKER6 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/05/2015, 00h22
  2. Macro fusion de cellule selon une variable
    Par tomAH74 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/05/2013, 07h53
  3. [XL-2003] remplir une cellule selon donnée tableau
    Par Neptune64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/09/2010, 01h13
  4. [VBA]Compter les cellules selon leurs couleurs...
    Par ronron1978 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/01/2006, 15h27
  5. Remplir les cellules Excel avec des variables VB
    Par rupeni dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/11/2005, 09h31

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