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 :

Formule et liste déroulante en VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut Formule et liste déroulante en VBA
    Hello !

    Petite question VBA. J'ai une macro qui, lorsque l'on rentre une valeur dans une cellule définie, crée le même nombre de lignes en-dessous. Une "message box" demande ensuite le nombre qui apparaitra dans la première cellule de chaque ligne. Voici la macro (merci à Polux pour le gros coup de main) :

    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
    Sub Creation_Lignes()
     
    Dim nbLig As Variant
    Dim lig As Long
    Dim i As Long
    Dim rep As Variant
     
        nbLig = ActiveCell.Value
        ActiveCell.Font.Bold = True
        If nbLig = Null Or Not IsNumeric(nbLig) Then Exit Sub
     
        lig = ActiveCell.Row + 2
     
        Rows(lig & ":" & lig + (CLng(nbLig) - 1)).Select
        Selection.Insert Shift:=xlDown
     
        For i = 1 To nbLig
            rep = InputBox("Entrer le nombre 1 :", "Saisie")
            Range("A" & lig).Value = rep
            lig = lig + 1
        Next
     
    End Sub
    Cela marche très bien. Ce que j'aimerais faire maintenant, c'est rentrer une formule pour la 3eme cellule (par exemple) de chaque ligne, qui prendrait en compte les nombres rentrés dans les 2 premières cellules de la ligne. J'aurais aimé par exemple que la 3eme cellule multiplie directement les 2 nombres rentrés avant.
    J'ai essayé multiplication = Cells(A, lig) * Cells(B, lig)
    Range("C" & lig).Value = multiplication dans la boucle FOR, mais ça ne marche : ma syntaxe pour la formule est surement mauvaise...

    Autre chose que je recherche aussi, c'est créer une liste déroulante dans ces lignes (par exemple pour la 4eme cellule de chaque ligne). Quelqu'un sait-il faire ça en VBA?

    J'espère avoir été clair dans mes questions. Merci d'avance pour vos réponses et vos suggestions

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour RussellD,

    tu as inversé ligne et colonne,
    la syntaxe est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(lig, "C") = Cells(lig, "A") * Cells(lig, "B")
    isabelle

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    En ce qui concerne la liste déroulante...les éléments de cette liste sont-ils dans ton fichier, si oui le plus simple est de nommer (pour l'exemple: LeNomDeLaPlage) la plage qui contient la source de ta liste, ensuite ce bout de code fait le reste (place la liste dans la colonne A):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("LeNomDeTaFeuille").Cells(Lig, 1).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=LeNomDeLaPlage"
    End With
    Sinon, tu peux directement mettre les éléments contenu dans la liste dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        With Sheets("LeNomDeTaFeuille").Cells(Lig, 1).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="1er élément de la liste, 2ème élément de la liste"
        End With
    A+

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Par défaut
    Merci beaucoup à vous deux, cela marche parfaitement !

    A bientot

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

Discussions similaires

  1. liste déroulante et vba
    Par dodie84 dans le forum VBA Access
    Réponses: 11
    Dernier message: 21/04/2008, 14h44
  2. Réponses: 2
    Dernier message: 20/02/2008, 13h30
  3. Réponses: 2
    Dernier message: 21/10/2007, 01h56
  4. Liste déroulante Excel VBA
    Par a.dequidt dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/09/2007, 17h34
  5. Réponses: 4
    Dernier message: 16/06/2005, 16h37

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