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 une cellule jusqu'a une cellule variable


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut incrémenter une cellule jusqu'a une cellule variable
    Bonjour,

    je voudrais créer un bouton qui va insérer une ligne au dessus d'une certaine cellule recherché (où il y a écrit revente matériel) dans la macro...jusque là ca va!!!!

    je voudrais ensuite incrémenter ce qu'il y a dans la cellule A31 jusqu'a la cellule situé sur la ligne créé (juste avant revente matériel)

    Problème: il faudrait pouvoir à chaque fois qu l'on appuit sur le bouton insérer la ligne (no problem!!) mais également éffectué l'incrémentation jusque la cellule de la ligne créé (big problem)

    il pourra y avoir donc plusieurs lignes créées et à chaque fois il faudrait incrémenter jusqu'à cette ligne

    Voila la macro que j'ai fait:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    revente = "          Revente matériel remplacé"
    Dim NumLg
    On Error Resume Next
        
    With ActiveSheet                                 'désactivation de la protection
        .Protect vbNullString, True, True, True, True      'de la feuille synthèse
        .Range("A1").Copy .Range("A1")
        .Unprotect vbNullString
    End With
        
        Cells.Find(What:=(revente), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder _
        :=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
    
    
    With Application.ActiveCell
        NumLg = .Row
    End With
        
        ActiveCell.EntireRow.Select
        Selection.Insert Shift:=xlDown
    
        Cells.Find(What:=(revente), After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder _
        :=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
    
        ActiveCell.Offset(-1, 0).Range("A1").Select
    
        ActiveWorkbook.Names.Add Name:="lot_fin", RefersToR1C1:= _
            "=R32C1"
        
        Range("A31").Select
        
        Selection.AutoFill Destination:=Range("A31:lot_fin"), Type:=xlFillDefault
        Range("A31:lot_fin").Select
        
        ActiveWorkbook.Names("lot_fin").Delete
    Comme vous pouvez le voir en bleu j'ai essayé de nommer la cellule de la ligne créé pour incrémenter jusqu'à cette cellule créé (ensuite je supprime ce nom pour le faire plusieurs fois). Je n'ai pas réussi à ce que le nom s'inscrive dans la nouvelle cellule (il faudrait pouvoir changer le "32"de la formule) et je me demande s'il n'existe pas un autre moyen.

    Voila j'espère que c'est assez clair (j'en doute un peu...)

    Merci

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Citation Envoyé par derf3183

    Voila j'espère que c'est assez clair (j'en doute un peu...)
    Non t'a oublié les balises codes

    Sinon tu insère quoi comme lignes ? des lignes vides ou des choses qu'il y a écrit ? peut etre avec une boucle while ou un Do Until tu devrait pouvoir le faire
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    le probleme avec do...until c'est que je ne sais pas comment lui dire incréménte jusqu'a telle ligne qui changera a chaque fois:

    Selection.AutoFill Destination:=Range("A31:A32"), Type:=xlFillDefault
    Range("A31:A32").Select

    Mon probleme se situe en bleu car je voudrais que la premiere fois que je clique ca aille jusqu'a 32 la 2eme jusqua 33...etc

    Sais tu comment faire pour que la macro cherche la cellule et ensuite inscrire à la place de A32 qqch qui se referera à ca (ou plus precisement la ligne au dessus). Je m'explique:
    Faire rechercher la cellule où se situe revente matériel
    Et à la place de A32 mettre : la cellule au dessus du résultat de la recherche


    Merci

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    tu met la valeur de la ligne dans une variable tu fais par exemple un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i = 1
    while cells(i,1).value <> "revente"
             i = i+1
    wend
    Ensuite tu utilise i dans ta formule si c'est la ligne au dessus de i il suffit que tu lui retranche 1

    ça te va comme ça ? ou il y a d'autres paramètres à prendre en compte ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Je pense effectivement qu'on touche au but mais il y a juste un petit truc encore j'ai compris que cela voulais dire répéter la condition tant que la cellule est differente de revente matériel mais j'avoue que je ne comprends pas comment tu remplace le A32 avec le i

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    I = 31
    While Cells(I, 1).Value <> "          Revente matériel remplacé"
        
        Selection.AutoFill Destination:=Range("A31:A32"), Type:=xlFillDefault
        Range("A31:A32").Select
        
        I = I + 1
        Wend
    Merci

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    S'il te plait, met des balises codes c'est difficile lisible quand tu écrit, de plus ut vas te faire enguirlander par les modos si tu continue (c'est les # pour se faire )


    De plus, pour ta macro, met plutot ton autofill après ta boucle, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    I = 31
    While Cells(I, 1).Value <> " Revente matériel remplacé"
    I = I + 1
    Wend
    Selection.AutoFill Destination:=Range("A31:A" & i), Type:=xlFillDefault
    Range("A31:A" & i).Select
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Je suis désolé je savais pas pour les balises codes merci de me le dire
    Je teste et je te dis si ca marche
    Merci

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    N'oublie pas le ptit tag "résolu" si jamais ça fonctionne
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    FELICITATIONS
    t un boss et ce même sans voir la feuille ni la macro en entier

    Maintenant je vais essayer de trouver le bouton résolu

    Merci beaucoup
    A+

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

Discussions similaires

  1. [XL-2007] Macro Excel copier cellule en fonction de cellule indentique dans une colonne
    Par stephane12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2014, 06h51
  2. Copier une table Access d'une base de données à une autre
    Par Marie S. dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/05/2007, 12h09
  3. Réponses: 11
    Dernier message: 06/12/2005, 08h23
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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