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 :

Incrémenter la valeur d'une cellule suite à l'insertion d'une ligne en VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur Etudes

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut Incrémenter la valeur d'une cellule suite à l'insertion d'une ligne en VBA
    Re-la compagnie,

    Je bute cette fois sur l’incrémentation, et la je tourne bourrique, j'ai trouvé sur le net plusieurs exemple mais je n'arrive pas à l'adapter à mon fichier.

    J'ai un tableau excel ou j'insère des nouvelles demandes (recopie de combobox et textbox d'un Userform via un bouton), ces donnée s'insère à partir de la colonne B. En colonne A j'ai une référence unique par ligne, vous l'aurez compris j'ai besoin que cette référence s’incrémente de +1 lorsque j'insère une nouvelle ligne.

    Voici le dernier code en date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton3_Click()
     
    Dim L As Integer
    Dim R As Integer
     
    If MsgBox("Etes-vous certain de vouloir INSERER cette nouvelle demande ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
    L = Sheets("BASE").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
    R = Sheets("BASE").Range("a65536").End(xlUp).Row 'Permet de ce positionner sur la dernière ligne du tableau
     
    Ws.Cells(L, "A").Value = Ws.Cells(R, "A").Value + 1
    et pour info la variable Ws est déclaré comme worksheet pour l'ensemble de mon code

    La dernière ligne ne lui plait pas (erreur de type 13 : incompatibilité de type)

    Merci d'avance pour vos éclaircissement sur mon erreur

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Où et comment as-tu très précisément déclaré et initialisé cette variable Ws ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Ws.Cells(L, "A").FormulaR1C1 = "=R[-1]C+1"
    Ws.Cells(L, "A").value = Ws.Cells(L, "A").value

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par guigus Voir le message
    j'ai besoin que cette référence s’incrémente de +1 lorsque j'insère une nouvelle ligne.
    Tu mets en A2 la formule =SI(B2="";"";LIGNE()-1).
    Tu copies A2 vers le bas autant que nécessaire.

    et pour info la variable Ws est déclaré comme worksheet pour l'ensemble de mon code
    Même si cette variable est déclarée, ça ne veut pas dire qu'elle est renseignée.
    Mets un point d'arrêt sur cette ligne de ton code (ou un Debug.Print Ws.Name) et regarde la valeur de Ws dans la fenêtre de variables locales.

    Je ne comprends pas non plus pourquoi tu utilises les deux variables L et R.
    Si tu remplaces L par R -1, ça fonctionne tout aussi bien.
    Voir même : Ws.Cells(L, "A").Value = L (tout simplement).

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur Etudes

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    En fait avec vos formules j’obtiens le numéro de ligne, ce qui est un bon début mais ne correspond pas à mon besoin.

    En précision la référence en colonne A est du type "R18-001", puis la ligne suivante "R18-002", du coup quand je vais inserer la ligne suivante je souhaite qu'automatiquement il mette en A3 "R18-003" ainsi de suite.

    merci d'avance

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par guigus Voir le message
    En fait avec vos formules j’obtiens le numéro de ligne, ce qui est un bon début mais ne correspond pas à mon besoin.
    Si tu pouvais ne pas donner te info au compte-goutes, ça ferait gagner du temps à tout le monde.

    En précision la référence en colonne A est du type "R18-001", puis la ligne suivante "R18-002", du coup quand je vais inserer la ligne suivante je souhaite qu'automatiquement il mette en A3 "R18-003" ainsi de suite.
    Fais un test.
    Tapes "R18-001" dans ta première ligne et tire la cellule vers le bas (en choppant le petit carré en bas à droite de la cellule quand elle est sélectionnée).
    Qu'est-ce que tu obtiens ?

    Si tu ne veux pas avoir à faire cette manipulation à chaque saisie, tu mets en A2 la formule =SI(B2="";"";LIGNE()-1).
    Tu sélectionnes la cellule > Clic droit > Format de cellule > Onglet Nombre > Catégorie : Personnalisée > dans le champs type, tu mets "R18-"000.
    Tu copies A2 vers le bas autant que nécessaire.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur Etudes

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    C'est tout bon.

    Merci bien

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

Discussions similaires

  1. [XL-2010] Lancer une macro suite à la modification d'une cellule
    Par emjidé dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/02/2018, 18h39
  2. Réponses: 2
    Dernier message: 10/10/2016, 21h43
  3. Réponses: 1
    Dernier message: 28/10/2015, 17h20
  4. Réponses: 2
    Dernier message: 13/05/2014, 20h58
  5. Réponses: 3
    Dernier message: 16/10/2007, 16h25

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