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-E] Incrémentation automatique d'une valeur suite à l'insertion de ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Points : 150
    Points
    150
    Par défaut [VBA-E] Incrémentation automatique d'une valeur suite à l'insertion de ligne
    Bonjour,

    J'ai une cellule A1 qui contient le numéro de ligne d'une autre cellule qui est passé comme paramètre à un sub.
    Lorsque j'insère une nouvelle ligne, je suis obligé d'incrémenter le contenu de
    A1 par 1.
    Est ce il y a une possibilité de l'incrémenter automatiquement suite à l'insertion d'une ligne ?

    Merci.
    Réussir c'est faire le bon choix.

    Voici ma supper fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fonction ChercherSolution(User_id:login in www.developper.com):Vrai;

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Par soft, tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Cells(1, 1) = Range("A1").SpecialCells(xlCellTypeLastCell).Row
    Dans Excel, chaispas
    A+

  3. #3
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Normalement Excel te modifie ta formule automatiquement. Si tu as une formule du genre =LIGNE(A18) en A1 et que tu insères une ligne entre la ligne 1 et 18, la formule de A1 devient =LIGNE(A19).
    En revanche dans VBA, ça ne le fait pas. Du coup, perso, je nomme ma cellule A18 et je l'appelle dans ma procédure avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NumeroLigneCelluleToto=Range("NomCellule").Row
    , comme ça j'ai pas à me soucier des insertions de lignes

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Merci cwai, ton idée est bonne mais comment récupère-t-il le N° de la dernière ligne dans A1 ? Faudrait qu'il mette une formule "=Ligne" dans la dernière ligne et je ne suis pas sûr qu'il puisse faire ça
    A+

  5. #5
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Heu, en fait je comprends pas trop la question , j'ai pas compris qu' abdelghani_k voulait faire quelque chose avec la dernière ligne ??

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    T'as raison, moi non plus je n'ai pas trop compris la question...
    C'est cette ligne qui m'a "insufflé" ma réponse
    Est ce il y a une possibilité de l'incrémenter automatiquement suite à l'insertion d'une ligne ?
    mais dans le fond, je ne sais pas... Je crois qu'on devrait attendre que abdelghani_k il se manifeste de nouveau
    A+

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Une possibilité:
    Dans A1, mettre la formule
    par exemple.

    Dans le code, pour faire référence à la ligne 20 en allant chercher le contenu de A1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Range(Mid([A1].Formula, 2)).Row
    Quelque soit le nombre de lignes que tu insères entre A1 et A20, l'adresse renvoyée sera toujours la bonne.

    Une autre méthode serait de nommer la cellule de référence.
    Plus besoin de garder sa position en A1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Range(Split(ActiveWorkbook.Names.Item("UnNom").RefersTo, "!")(1)).Row
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Membre habitué Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Points : 150
    Points
    150
    Par défaut
    Salut,

    j'éclaircis mon problème :

    sur la feuille du classeur excel,
    contenu A1 = coordonée impot.
    contenu B1 = 10 (Ligne cellule qui contient le résultat impot)
    contenu C1 = 2 (Colonne cellule impot)

    Cellule(10,2)=B10

    contenu A10 : impot.
    contenu B10 = 215 (résultat sub calculimpot)
    voici calculimpot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub calculimpot (L As Integer, C As Integer)
      'L est la ligne de la cellule qui contient le resultat de calcul
      'C est sa colonne
      ...
      RESULTAT= expression
      ...
      Worksheets(Sheet).Cells(L, C).Value = RESULTAT
    End Sub
    Je fais un appel à calculimpot comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    calculimpot Range("B1").Value, Range("C1").Value
    défois je suis obligé d'insérer des lignes pour d'autres charges autres que impot.

    si on insère une ligne avant la ligne d'impot donc :

    contenu B1 = 10
    contenu C1 = 2

    contenu A10 = vide
    contenu B10 = vide

    contenu A11 : impot.
    contenu B11 = 215

    Je veux que le contenu de B1 s'incrémente automatiquement parceque B1 va contenir 11 et non pas 10 aprés l'insertion d'une ligne.
    Mais je le fais manuellement.

    Merci de votre collaboration.
    Réussir c'est faire le bon choix.

    Voici ma supper fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fonction ChercherSolution(User_id:login in www.developper.com):Vrai;

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    As-tu lu (et essayé) ce que j'ai écrit?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Du coup, perso, je nomme ma cellule A18 et je l'appelle dans ma procédure avec
    Code :
    NumeroLigneCelluleToto=Range("NomCellule").Row
    , comme ça j'ai pas à me soucier des insertions de lignes
    Une autre méthode serait de nommer la cellule de référence.
    Plus besoin de garder sa position en A1.
    Code :

    MsgBox Range(Split(ActiveWorkbook.Names.Item("UnNom").RefersTo, "!")(1)).Row
    Nomme ta cellule impôt puis tu y fais appel comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("IMPOT").Value = RESULTAT
    Pour nommer ta cellule dans Excel, tu cliques dessus, et à gauche de la barre de fonction (fx), tu remplaces B10 par IMPOT ou le nom que tu veux

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

Discussions similaires

  1. [XL-2007] Ajouter automatiquement une incrémentation à droite d'une valeur collée
    Par abdel792 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/12/2010, 18h28
  2. [VBA Excel] Copie automatique d'une donnée
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/07/2006, 13h21
  3. [VBA-E]Methode pour trouver une valeur qui apparait plusieur fois
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/05/2006, 13h11
  4. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53
  5. [VBA-E] Lancement automatique d'une macro (débutante)
    Par pom_poir dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/11/2005, 17h57

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