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 de lignes via VBA sur un onglet en fonction de données sur un autre onglet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    ingénieur qualité
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingénieur qualité
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Par défaut Création de lignes via VBA sur un onglet en fonction de données sur un autre onglet
    Bonjour,

    Je cherche à créer via macro, des lignes dasn un onglet en fonction de données d'un autre onglet.

    avec un exemple :

    1er onglet :
    produit péremption (mois)
    a 36
    b 24
    c 60
    d 12
    e 72

    Je voudrais que lorsque j'indique via une textbox ma plage a à b, des lignes soient créées dans un second onglet avec une ligne par multiple de 12.


    Dans mon exemple si je dis que je veux créer les lignes pour les produits b à c, j'ai dans le second onglet :

    produit échéance
    b 0
    b 12
    b 24
    c 0
    c 12
    c 24
    c 36
    c 48
    c 60

    Est-ce que vous auriez une idée de comment faire cela ?

    merci d'avance.
    Zoé

  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,

    ce n'est pas bien compliqué, pour chaque élément il suffit de faire une boucle For/Next comme ça (exemple avec un produit à péremption X mois) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = X to 0 Step -12
        'Ecriture de i en colonne B et du produit en Colonne A
    Next i

    ce qui est le plus important, c'est la partie qui permet de choisir les éléments, c'est pas très clair dans ton explication.

    comment tu vois la chose ? Comment marier tes deux éléments dans un textbox ? Comment l'utilisateur va savoir les deux produits "bornes" à choisir ? il dispose de quoi pour l'aider ? etc....

    et d'un aspect purement pratique : comment doit réagir la procédure quand la péremption n'est pas un multiple de 12 ?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    ingénieur qualité
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingénieur qualité
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Par défaut
    bonjour
    merci d'avoir pris en compte ma demande.

    je crois que le plus simple c'est de joindre mon fichier excel avec la macro que j'ai déjà attaqué
    Suivi SOG FORUM.xlsm

    Zoé

  4. #4
    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,

    je n'ai pas besoin du fichier pour lire la procédure que tu as déjà commencé, il te suffit de copier les lignes de code dans un message

    et surtout, le plus important est de bien décrire le point que j'ai soulevé, c'est à dire la partie où l'utilisateur choisi deux produits qui représenteront les bornes de traitement de ta liste de départ

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    ingénieur qualité
    Inscrit en
    Mai 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingénieur qualité
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2016
    Messages : 6
    Par défaut
    Bonjour,

    Désolé pour le retarde de réponse mais j'étais en formation sans accès à mon programme.

    Voici le code utilisé :

    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
    Sub CREATIONECHEANCE()
     
    ' initialisation des variables
     
    Dim TextBox1 As String
    Dim TextBox2 As String
    Dim a As String
    Dim b As String
    Dim i As Integer
    Dim Lig As Long
    Dim peremp As String
    Dim cell As Range
     
     
    Lig = 1
     
    Application.ScreenUpdating = False
     
    ' Demande la plage de référence des études pour lesquelles il faut créer les lignes d'échéances
     
        TextBox1 = InputBox("Veuillez indiquer la première référence pour laquelle il faut créer les échéances (#AAAAA):")
        TextBox2 = InputBox("Veuillez indiquer la dernière référence pour laquelle il faut créer les échéances (#AAAAA):")
     
    ' attribution de l'adresse des cellules correspondantes et définition de la plage
     
        a = Cells.Find(TextBox1, , xlValues).Address
        b = Cells.Find(TextBox2, , xlValues).Address
     
       Set plage = Feuil6.Range(a, b)
       Set per = plage.Offset(0, 8)
     
     
    ' définition 1ère ligne vide dans la feuille de suivi des échéances
     
        Do While Not IsEmpty(Feuil9.Range("A" & Lig))
            Lig = Lig + 1
        Loop
     
        cell1 = Feuil9.Range("A" & Lig)
     
    ' création lignes échéances en fonction de la péremption
     
        For Each cell In per
     
    '       Set cellp = cell.Offset(0, 8) ' 8 = nombre de colonne à droite de la cellule pour atteindre cellule péremption
    '       Set peremp = cellp.Value
            Select Case cell.Value
                Case Is = 12
                    Feuil9.Activate
                    cell1.Select
                    cell1.Value = cell.Value
                    cell1.Offset(0, 14).Select.Value = 12
     
                Case Is = 24
                    Feuil9.Activate
                    cell1.Select
                    cell1.Value = cell.Value - 12
                    cell1.Offset(0, 14).Select.Value = 12
                    cell1.Offset(1, 0).Select.Value = cell.Value
                    cell1.Offset(1, 14).Select.Value = 24
     
                Case Is = 36
                    Feuil9.Activate
                    cell1.Select
                    cell1.Value = cell.Value - 24
                    cell1.Offset(0, 14).Select.Value = 12
                    cell1.Offset(1, 0).Select.Value = cell.Value - 12
                    cell1.Offset(1, 14).Select.Value = 24
                    cell1.Offset(2, 0).Select.Value = cell.Value
                    cell1.Offset(2, 14).Select.Value = 36
     
                Case Is = 48
                    Feuil9.Activate
                    cell1.Select
                    cell1.Value = cell.Value - 36
                    cell1.Offset(0, 14).Select.Value = 12
                    cell1.Offset(1, 0).Select.Value = cell.Value - 24
                    cell1.Offset(1, 14).Select.Value = 24
                    cell1.Offset(2, 0).Select.Value = cell.Value - 12
                    cell1.Offset(2, 14).Select.Value = 36
                    cell1.Offset(3, 0).Select.Value = cell.Value
                    cell1.Offset(3, 14).Select.Value = 48
     
                Case Is = 60
                    Feuil9.Activate
                    cell1.Select
                    cell1.Value = cell.Value - 48
                    cell1.Offset(0, 14).Select.Value = 12
                    cell1.Offset(1, 0).Select.Value = cell.Value - 36
                    cell1.Offset(1, 14).Select.Value = 24
                    cell1.Offset(2, 0).Select.Value = cell.Value - 24
                    cell1.Offset(2, 14).Select.Value = 36
                    cell1.Offset(3, 0).Select.Value = cell.Value - 12
                    cell1.Offset(3, 14).Select.Value = 48
                    cell1.Offset(4, 0).Select.Value = cell.Value
                    cell1.Offset(4, 14).Select.Value = 60
     
                Case Is = 72
                    Feuil9.Activate
                    cell1.Select
                    cell1.Value = cell.Value - 60
                    cell1.Offset(0, 14).Select.Value = 12
                    cell1.Offset(1, 0).Select.Value = cell.Value - 48
                    cell1.Offset(1, 14).Select.Value = 24
                    cell1.Offset(2, 0).Select.Value = cell.Value - 36
                    cell1.Offset(2, 14).Select.Value = 36
                    cell1.Offset(3, 0).Select.Value = cell.Value - 24
                    cell1.Offset(3, 14).Select.Value = 48
                    cell1.Offset(4, 0).Select.Value = cell.Value - 12
                    cell1.Offset(4, 14).Select.Value = 60
                    cell1.Offset(5, 0).Select.Value = cell.Value
                    cell1.Offset(5, 14).Select.Value = 72
     
            End Select
     
        Next
     
    End Sub
    je suis m'excuse en avance de mes faibles connaissances en VBA

    Zoé

  6. #6
    Membre chevronné Avatar de Kiouane
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 198
    Par défaut
    Quand tu postes un code, sélectionne le et clique sur le bouton # pour une meilleure visibilité. Merci!

Discussions similaires

  1. [XL-2013] Création de TCD via VBA
    Par Akhekhu dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 04/05/2015, 22h55
  2. Bouton pour création de lignes en VBA
    Par Takeo31 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/04/2011, 16h06
  3. [AC-2007] Utiliser une variable comme alias lors de la création de table via Vba
    Par Tipstitou dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/09/2010, 10h29
  4. Réponses: 12
    Dernier message: 22/07/2009, 12h00
  5. Création de controles via VBA
    Par galinette dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/10/2007, 18h10

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