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 :

Ajouter une formule dans la colonne B [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 224
    Par défaut Ajouter une formule dans la colonne B
    Bonjour , j'ai une feuille qui ajoute des lignes au fur et à mesure, pris sur l'exemple de Philippe ici .

    J'ai une colonne en B que j'ai insérer à l'original qui doit m'afficher le numéro de ligne:
    En B2 ligne qui ne s'efface jamais, j'ai la formule suivante :

    B1 étant le titre de la colonne.
    Donc B2 m'affiche 1 qui correspond au numéro 1 de la liste.
    B3, B4 doivent restées vides ( sans formule ) pour ne pas que ma liste box affiche des numéros sans enregistrement.




    Je voudrais qu'a chaque rajout dans la colonne B la formule "=LIGNE()-1" soit ajoutée afin que sur le cellule de la feuille apparaissent le numéro correspondant à la ligne -1

    J'ai dans l'idée de rajouter la formule au moment du click de validation voir ci dessous :

    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
    Private Sub cmdConfirm_Click()
     Select Case UserFormStatus
       Case Status.NewRec ' Nouvel enregistrement
         WriteRecord rng.Rows.Count: InitData: InitRowSource
         Me.cboMember.ListIndex = rng.Rows.Count - 1
       Case Status.Modify: WriteRecord CurrentRecord ' Modification de l'enregistrement
     End Select
     OppositeStatus ' Inverse la valeur booléenne des boutons d'action
     
     ' sauvegarde auto
    ThisWorkbook.Save
     
    ' mettre ci dessous le code qui ajoute la formule **********************************************
     
     
    End Sub

    Car je pense que ça serait plus simple que des les faire dans les enregistrements qui se font ici :

    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
    Private Sub WriteRecord(ByVal RecordNumber As Long)
     ' Ecriture de l'enregistrement cela ecrit sur la feuille exell--------------------------------------------------------------------------------------
     Me.cboMember.ListIndex = -1
     RecordNumber = RecordNumber + 1
     With rng
      With .Cells(RecordNumber, 1)
       If Len(.Value) = 0 Then ' ID
        .Value = Application.WorksheetFunction.Max(rng.Columns(1)) + 1
       End If
      '.NumberFormat = "\R000" ' Format
      End With
     
     '.Cells(RecordNumber, 2) = Me.frmMember.Caption
     
     
     .Cells(RecordNumber, 3) = Me.txtNom
     
    ' etc ....
     
     End With
     Me.cboMember.ListIndex = CurrentRecord
     
     
     
     
    End Sub
    Merci d'avance.

  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,

    et pourquoi pas conditionner directement la contrainte B3:B4 dans la formule pour faciliter la recopie des formules ?

    s'il faut passer du chiffre 1 en B2 à 2 en B5 pour continuer la numérotation
    =SI(ET(LIGNE()<>3;LIGNE()<>4);MAX(B$1:B1)+1;"")
    s'il faut respecter LIGNE()-1 quoi qu'il arrive

    =SI(ET(LIGNE()<>3;LIGNE()<>4);LIGNE()-1;"")

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 224
    Par défaut
    Bonjour, parce que si une formule se trouve dans une case où la ligne n'a aucune saisie, elle apparaît dans ma listebox en ligne vide .
    J'ai trouvé la solution avec la fonction .Formula qui me rajoute la formule à chaque saisie dans la case !

    Merci.

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

Discussions similaires

  1. Inputer une formule dans la colonne d'un tableau importé via une macro
    Par Arone77 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 17/09/2016, 21h34
  2. Réponses: 1
    Dernier message: 12/12/2008, 17h06
  3. ajouter une condition dans une formule
    Par NEC14 dans le forum Excel
    Réponses: 9
    Dernier message: 14/10/2008, 14h51
  4. Peut-on ajouter une formule dans un TCD
    Par gdolfin95 dans le forum Excel
    Réponses: 2
    Dernier message: 19/06/2008, 14h23
  5. Réponses: 6
    Dernier message: 08/01/2007, 14h13

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