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 :

création d'une application pour modifier un code VBA


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
    Etudiant ingé
    Inscrit en
    Septembre 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Etudiant ingé

    Informations forums :
    Inscription : Septembre 2019
    Messages : 37
    Par défaut création d'une application pour modifier un code VBA
    Bonjour,

    Petit novice dans le vaste domaine du code VBA je cherche à créer une petite application en VBA qui me permettrait de changer certaine donner dans un autre code.

    En gros pour faire simple.

    J'ai une macro (ou application je ne sais pas trop comment nommé ça) qui me permet d'enregistrer certaine donner d'un tableau dans une autre feuille. Pour cela je lui ai donné les coordonnées des cellules qu'il doit enregistrer. L'idée est que le tableau à tendance a changé. Les coordonnés ne sont donc pas toujours les mêmes. J'aimerais donc faire une petite application qui va mettre à jour le code avec les nouvelles coordonnées des cellules que je lui aurai transmises.

    Voici mon code : (il contient beaucoup de commentaire sous la forme ' car il est censé être vue, compris et amélioré par d'autre personne.)

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Dim nbdate, val As Integer
    Dim Lstruc, Lmp, Lcaro, LequiV, LequiE, LequiO, Ltotal, C1, Cfin, nbC As Integer
    Dim formule As Variant
    Dim ws1, wsprix As Worksheet
     
    _____________________________________________________________________________________________
     
    Sub sauvgarde_prix()
     
    ' sauvgarde_prix
    '
    ' Permets  de sauvegarder les prix finals de chaque sous-ensemble pour suivre son évolution
     
    Set ws1 = Worksheets("feuille 1")
    Set wsprix = Worksheets("historique des prix")
     
    ' ici sont regoupés les coordonner des differents grandes parties.
    ' L pour ligne C pour colonne. t'as vue c'est simple
     
    Lstruc = 5
    Lmp = 116
    Lcaro = 158
    LequiV = 571
    LequiE = 753
    LequiO = 827
    Ltotal = 869
    C1 = 117
    Cfin = 120
     
    ' nbC est le nombre de colonnes ou de produits
     
    nbC = (Cfin - C1) + 1
     
    ' ici la formule permet de savoir combien de date on déjà était rentré.
    ' afin de bien faire le décalage
    ' "nbdate" est le nombre de date déjà existant
     
     
        formule = "=COUNTA(A2:CA2)"
        wsprix.Cells(1, 1).Formula = formule
        nbdate = wsprix.Range("A1").Value
     
    ' le sous-programme "ecriture" est la partie où les donner son écrite
    ' il est séparé du programme initial pour faciliter l'écriture du code
     
            ecriture
     
    'autofit permet de rendre le tableau plus lisible
     
            autofit
     
    ' le clear est  là uniquement parce que c'est pas très joli une formule en plein milieu de donner
     
        Range("A1").Clear
     
    End Sub
     
    _____________________________________________________________________________________________
     
    Sub ecriture()
     
    ' fusion de cellules et écriture de la date d'aujourd'hui
     
      wsprix.Select
      wsprix.Range(wsprix.Cells(2, 2 + nbC * nbdate), wsprix.Cells(2, 1 + nbC + nbC * nbdate)).Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        Selection.Style = "Sortie"
        ActiveCell.Formula = Now
     
    ' retransmission des donnés
     
     
    wsprix.Range(wsprix.Cells(3, 2 + nbC * nbdate), _
                  wsprix.Cells(3, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(1, C1), _
                                                                ws1.Cells(1, Cfin)).Value
    wsprix.Range(wsprix.Cells(4, 2 + nbC * nbdate), _
                  wsprix.Cells(4, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(Lstruc, C1), _
                                                                ws1.Cells(Lstruc, Cfin)).Value
    wsprix.Range(wsprix.Cells(5, 2 + nbC * nbdate), _
                  wsprix.Cells(5, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(Lmp, C1), _
                                                                ws1.Cells(Lmp, Cfin)).Value
    wsprix.Range(wsprix.Cells(6, 2 + nbC * nbdate), _
                  wsprix.Cells(6, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(Lcaro, C1), _
                                                                ws1.Cells(Lcaro, Cfin)).Value
    wsprix.Range(wsprix.Cells(7, 2 + nbC * nbdate), _
                  wsprix.Cells(7, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(LequiV, C1), _
                                                                ws1.Cells(LequiV, Cfin)).Value
    wsprix.Range(wsprix.Cells(8, 2 + nbC * nbdate), _
                  wsprix.Cells(8, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(LequiE, C1), _
                                                                ws1.Cells(LequiE, Cfin)).Value
    wsprix.Range(wsprix.Cells(9, 2 + nbC * nbdate), _
                  wsprix.Cells(9, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(LequiO, C1), _
                                                                ws1.Cells(LequiO, Cfin)).Value
    wsprix.Range(wsprix.Cells(10, 2 + nbC * nbdate), _
                  wsprix.Cells(10, 1 + nbC + nbC * nbdate)).Formula = ws1.Range(ws1.Cells(Ltotal, C1), _
                                                                ws1.Cells(Ltotal, Cfin)).Value
     
     
     
    End Sub
     
    _____________________________________________________________________________________________
     
    Sub autofit()
     
    Range(Columns(2 + nbC * nbdate), Columns(1 + nbC + nbC * nbdate)).EntireColumn.autofit
     
     
    End Sub
    Les coordonnée qui changeront sont :

    Lstruc = 5
    Lmp = 116
    Lcaro = 158
    LequiV = 571
    LequiE = 753
    LequiO = 827
    Ltotal = 869
    C1 = 117
    Cfin = 120

    L'hors de mes recherches j'ai trouvé ça.

    https://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Mais j'ai un peu de mal à comprendre ce qu'ils font et puis je ne suis pas sur que se soit vraiment ce que je cherche aussi.

    Du coup si vous avez un ou deux tuyaux je vous en serai très reconnaissant ^^

    Bonne journée

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 144
    Par défaut
    Bonjour

    Inutile de faire cela, colle les données dans une feuille et va les récupérer quand tu en as besoin, c'est beaucoup plus simple.

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant ingé
    Inscrit en
    Septembre 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Etudiant ingé

    Informations forums :
    Inscription : Septembre 2019
    Messages : 37
    Par défaut
    Salut Phiphi41,

    J'y pensais aussi. Le problème c'est que du coup ça va créer une feuille avec pas mal de donner. Ce n'est pas méga joli. Mais si ses vraiment trop compliqués ça va finir comme ça.

  4. #4
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, pourquoi n'essayez vous pas de Nommer les cellules qui vous intéressent exemple "Lstruc" (Insertion/nom/définir, avec la cellule nommée qui est sélectionnée), vous pourrez ainsi atteindre la valeur de la cellule avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaVar = Range("Lstruc").value ' la valeur sera donc dans la variable MaVar
    Vous pouvez rajouter des lignes ou des colonnes, le nom suit la cellule considérée. par contre, je crois que cela ne suis pas s'il y a un tri???

    Cordialement

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant ingé
    Inscrit en
    Septembre 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Etudiant ingé

    Informations forums :
    Inscription : Septembre 2019
    Messages : 37
    Par défaut
    bonjour,

    cela reviens à ce que proposait phiphi41 non?

    l'idée du départ était de ne pas avoir besoin de créer une feuille supplémentaire avec de donner à gauche à droit utilisé par le code. Ce n'est pas très joli. mais ça va finir comme ça. je pensais que se serait plus simple que ça de juste changer deux trois donner sur un code VBA.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Dans un code VBA, on modifie un code quand il est écrit en «*dur*»*mais comme ce sont les valeurs des variables qui doivent changer, tu as une multitude de façons d’affecter les valeurs à ces variables comme par exemple, des InputBox, des cellules que tu peux masquer, des «*Noms*» cachés, etc... Mais une chose est sûre, tu n’as pas besoin de modifier le code !

Discussions similaires

  1. [Multi Plateforme] Aide pour la création d'une application mobile à lecteur de code barre
    Par sahya74 dans le forum Mon application mobile
    Réponses: 5
    Dernier message: 29/10/2015, 18h19
  2. développer une application pour lecteur de code barre
    Par kevin254kl dans le forum Windev Mobile
    Réponses: 2
    Dernier message: 28/09/2015, 17h33
  3. Réponses: 0
    Dernier message: 08/03/2015, 16h35
  4. Création d'une application pour la gestion de planning
    Par Fred30 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 05/05/2014, 15h21
  5. Réponses: 2
    Dernier message: 21/10/2010, 10h15

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