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 :

Ajouter une ligne basée sur la valeur d'une cellule problème


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Points : 27
    Points
    27
    Par défaut Ajouter une ligne basée sur la valeur d'une cellule problème
    Bonjour à tous,
    j'ai une VBA qui, une fois que l'utilisateur a choisi une valeur "Extend" ou "Modify" va ajouter (ou pas) une ligne dans mon tableau excel.
    j'ai deux problèmes liés:
    1) Le premier est que l'ajout de cette ligne reprends la liste de valeur de la ligne d'avant, alors que je souhaiterais avoir une nouvelle ligne vierge
    2) Le deuxième est que plus bas dans les mêmes colonnes, je souhiates avoir une deuxieme liste de valeur pour laquelle, suivant le choix encore une fois, une ligne pourra être aussi ajoutée suivant la valeur choisie par l'utilisateur (les valeurs sont différentes du premier cas)
    3) je n'ai pas de 3emes cas mais pourrait en avoir un si je dois encore ajouter une troixieme liste de valeur dans une autre cellule :-)
    J'ai attaché le fichier au poste, quelqu'un pourrait il m'aider?
    Merci à tous
    Guismo30
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Pas certain d'avoir compris ton problème

    Cela dit, dans un tableau structuré, qui est en fait une table de données, il faut comprendre que chaque ligne est une fiche normalement indépendante de la précédente. Cela veut dire que la donnée de la colonne A doit être remplie pour chaque fiche, et pas comme cela est exposé dans ton classeur. Si pour une raison ou une autre, tu dois trier les fiches, tu vas perdre l'info. il découle de cela que, dans un tableau structuré, l'ordre des lignes ne peut jamais avoir d'importance et qu'il peut être modifié à tout moment sans perte d'information.

    Dans un tableau structuré, si une formule est présente dans une colonne, ce doit être la même pour toute la colonne, de façon à permettre à Excel de jouer correctement son rôle lors de la modification d'une formule qui sera automatiquement répercutée sur les autres lignes de la colonne. Il en va de même pour les listes déroulantes et la mise en forme conditionnelle, qui est en soi une formule. Cela signifie que dans ton tableau, il faut une liste de validation sur chaque cellule de la colonne E du tableau.

    Peux-tu détailler ton souhait en français, c'est-à-dire sans jargon Excel, de façon à ce que nous puissions t'aider au mieux?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    merci beaucoup pour ta réponse,

    Alors, je vais essayer de m'expliquer... le fichier sert a des demandeurs pour les creations, modification et extensions de produits. Donc pour un produit X qui existe mais pour lequel l'utilisateur doit demander la modification de la description, il devra utiliser dans la cellule E7 de mon tableau "modify".. en choisissant cette valeur j'ai besoins qu'une ligne s'ajoute afin que l'utilisateur puisse ajouter le numéro de produit qui doit être modifié (et de même pour extend")... mon probleme est qu'a l'ajout de cette ligne, la nouvelle ligne contient la liste de valeur de la ligne précédente ce qui ne devrait pas arriver.

    Mon deuxieme probleme est que plus bas dans le fichier j'ai le meme cas de figure, le demandeur doit choisir dans une liste de valeur et suivant la réponse une ligne doit aussi s'ajouter.. mon probleme est que je ne sais pas comment faire

    Pour information le tableau n 'est pas obligatoire, on peut le supprimer. !
    J'espère que cette explication est un peut plus compréhensible
    merci pour le retour
    Cordialement
    guismo30

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Perso, je ne fonctionnerais pas sur un tableau conçu de cette manière, mais voici un code qui fait ce que tu demandes:
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim Index As Long
     
      On Error GoTo Catch
     
      If Target.CountLarge = 1 And Not Intersect(Target, Range("table1[requester]")) Is Nothing Then
        If UCase(Target.Value) = "MODIFY" Or UCase(Target.Value) = "EXTEND" Then
          Index = Target.Row - Range("table1[#headers]").Row
          Range("table1").ListObject.ListRows.Add Index + 1
        End If
      End If
     
    Catch:
      Application.EnableEvents = True
    End Sub
    Explications:
    • On n'est pas obligé de préciser la parentalité d'une plage d'un tableau, puisque le nom du tableau est unique dans le classeur;
    • On peut utiliser les références structurées en VBA, comme je l'ai fait avec Range("table1[requester]");
    • On calcule la position de la ligne par déduction du numéro de la ligne d'entête du tableau;
    • On insère la ligne à la position de l'index.


    A nouveau, on voit ici que l'utilisation du tableau structuré en VBA facilite grandement le code.


    Ceci dit, dans ton code, ce qui posait problème était la ligne .Offset(1, -2).Value = "62002543" qui plaçait un code article en dur en colonne C (pas le code de la ligne active, mais bien le code exprimé dans le code...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Bon je dois pas etre vraiement doué, je viens d'essayer mais la nouvelle ligne contient toujours la drop down list de la ligne précédente.. d'autre part comment puis je ajouter d'autre conditions (par ex si la ligne 18 on choisi F une nouvelle ligne doit s'ajouter en dessous.. même principe

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par guismo30 Voir le message
    Bon je dois pas etre vraiement doué, je viens d'essayer mais la nouvelle ligne contient toujours la drop down list de la ligne précédente...
    Comme je l'ai dit précédemment, normalement, si tu as une dropdown dans une cellule de colonne d'un tableau, il est normal et logique que tu l'aies dans TOUTES les cellules de la colonne. C'est le fonctionnement habituel d'un tableau structuré, appelé aussi table des données.

    Si tu n'as pas la dropdown, comment veux-tu que par la suite, ton utilisateur puisse demander une modification?

    Cela dit, pour réaliser ce que tu souhaites, tu peux utiliser le code suivant, mais c'est pour moi une mauvaise approche.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim Index As Long
     
      On Error GoTo Catch
     
      If Target.CountLarge = 1 And Not Intersect(Target, Range("table1[requester]")) Is Nothing Then
        Application.EnableEvents = False
        If UCase(Target.Value) = "MODIFY" Or UCase(Target.Value) = "EXTEND" Then
          Index = Target.Row - Range("table1[#headers]").Row
          Range("table1").ListObject.ListRows.Add Index + 1
          Target(2, 1).Validation.Delete
        End If
      End If
     
    Catch:
      Application.EnableEvents = True
    End Sub
    Normalement, tu devrais avoir la même validation partout. Lorsque tu dis "par exemple en F18", je me méfie parce que cela sous-entend que tes listes doivent être différentes de ligne en ligne, et ça ne répond pas à une conception correcte de ton classeur.

    On peut ajouter "F" à la condition IF UCase... mais ça me paraît foireux comme approche. Peut-être faudrait-il créer un tableau annexe comprenant les valeurs qui nécessitent un ajout de ligne? On pourrait alors regarder si la valeur saisie est présente dans ce tableau et insérer la ligne s'il échet.


    Je reste toutefois persuadé que l'approche est mauvaise. Ne comprenant pas ton besoin "métier" (<> de ton besoin "Excel" exprimé") et ne connaissant pas ton niveau de VBA, je sais difficilement t'aider davantage.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    en fait je n'ai aucune connaissance vba, je copy/past et trouve des solutions j'aimerais apprendre !
    de ce que je comprends de ta réponse, il faut que je vire le tableau afin d'avoir les drop down que je souhaite ou je le souhaite
    le but ultime est d'avoir dans la colonne E des dropdowns différents et que pour certains, suivant les valeurs, une nouvelle ligne sans dropdown s'ajoute automatiquement en dessous afin que l'utilisateur ajoute son commentaire.
    en attache j'ai mis un nouveau fichier plus explicatif...
    merci encore pour les réponses.
    Fichiers attachés Fichiers attachés

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Ce qu'il faut, ce n'est pas forcément virer le tableau, c'est expliquer la règle qui détermine ce qui doit être affiché dans la dropdown en fonction de certaines valeurs de la ligne. Lorsque tu auras expliqué cette règle, que toi seul peut connaître, nous pourrons t'aider à créer la dropdown qui dépend des données d'une ligne. Virer le tableau n'aidera personne à comprendre ce qui doit apparaître dans une liste déroulante

    Je répète: Explique ton besoin en français, surtout si tu ne connais pas VBA. Sans cela, on va répondre stricto sensu à ta demande et te retrouver dans 10 minutes pour le problème suivant. Si tu n'es pas développeur, n'explique pas ton problème avec du code et des mots de développeur, explique-les avec les mots d'un utilisateur qui exprime un besoin indépendamment des techniques qui seront mises en œuvre pour le résoudre.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2019
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    en fait c est super simple,en ouvrant le fichier excel que j ai ajouté a la demande, tu verras que c est explicite... ==> en francais: une colonne A dans laquelle moi je demande des infos, dans la colonne B la ou le demandeur répond. dans cette meme colonne B il y des cellules dans lesquelles j'ai mis une liste de valeur afin que le demandeur ne réponde qu avec les valeurs que je donne.. suivant la valeur qu il donne, j'aurai une ligne qui s'ajoutera automatiquement en dessous de la ou il a répondu...
    exemple ==> type de demande ==> réponse de la liste nouveau ou modifcation... le demandeur choisi "modification"... automatiquement juste en dessous une ligne doit s'ajouter dans laquelle le demandeur va mentionner le numéro du produit qui doit etre modifié

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/12/2018, 09h32
  2. [XL-2013] Copier FORMULE (sur une ligne) basée sur données en colonne
    Par Majistich dans le forum Excel
    Réponses: 6
    Dernier message: 24/04/2018, 16h55
  3. [XL-2003] Requette SQL basée sur la valeur d'une cellule
    Par Tsade9 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/10/2011, 10h57
  4. Réponses: 27
    Dernier message: 05/07/2010, 15h52
  5. Réponses: 9
    Dernier message: 20/08/2009, 14h33

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