Insérer une valeur dans une cellule à partir d'un tableau annexe

sophie60400_1604 Messages postés 29 Statut Membre -  
sophie60400_1604 Messages postés 29 Statut Membre -
Bonjour,
Je souhaiterais trouver une formule pour une commande particulière : lorsque je rentre une valeur dans la cellule Q22, je souhaiterais qu'elle s'inscrive dans la cellule de la nouvelle ligne insérée, à savoir C5.
De même, je souhaiterais que la valeur rentrée dans la cellule Q23 s'inscrive en D5.
Cependant, je souhaiterais que la valeur que j'inscris en E5 s'inscrive en Q24.
Aussi, lorsque j'insère une nouvelle ligne dans le tableau "Cheval 1" je souhaiterais que les valeurs s'effacent dans le tableau jaune sans que ça n'efface les valeurs inscrites précédemment dans le tableau "cheval 1"
J'espère être assez claire car c'est difficile à expliquer.
En vous remerciant par avance,
Cordialement

https://www.cjoint.com/c/KGAoaUmHFDX

9 réponses

  1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour à tous,

    Ce que tu veux, ça s'appelle un formulaire.
    Soit en le construisant en VBA, soit en utilisant Données ==>formulaire.
    Si tu ne le vois pas, il faut le mettre en passant par options==>personnaliser le ruban ==>tout . Tu cherches formulaire que tu ajoutes au groupe "données"

    Crdlmt
    0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    mettre dans le module de la feuille 1 ce code qui se déclenchera au double clic dans les cellules Q22, Q23 et Q24:

    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("Q22:Q24")) Is Nothing Then
     If Target.Value = "" Then Exit Sub
     Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q22").Value
     Range("D" & Range("TOTAL1").Row - 1).Value = Range("Q23").Value
     Range("E" & Range("TOTAL1").Row - 1).Value = Range("Q24").Value
     End If
    End Sub
    
    


    je souhaiterais que les valeurs s'effacent dans le tableau jaune

    Range("Q22:Q24").ClearContents
    


    Voilà

    0
  3. sophie60400_1604 Messages postés 29 Statut Membre
     
    Bonsoir,
    Merci pour votre retour. J'ai essayé d'ajouter la formule dans le module de la feuille 1. Cependant, quand je double clique sur la cellule, rien ne se passe. Peut être que je me suis trompée quelque part.
    Cordialement,

    https://www.cjoint.com/c/KGAsMpDhBOX
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Il faut mettre le code a la place de:

      Private Sub CommandButton1_Click()
      If CommandButton1.Caption = "Afficher" Then
      afficher
      CommandButton1.Caption = "Masquer"
      Else
      masquer
      CommandButton1.Caption = "Afficher"
      End If
      End Sub
      


      c'est le module de la feuille1!
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Pour aller dans le module de la feuille se mettre sur la feuille et Faire Alt F11

        Pour apprendre les bases de vba voir ceci:

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

        @+
        0
  4. sophie60400_1604 Messages postés 29 Statut Membre
     
    Bonjour,
    La formule fonctionne. Merci. Cependant, quand je souhaite réinsérer une ligne, un message s'affiche dans le module 1 :



    En vous remerciant par avance,
    Cordialement
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Je pense que le problème vient du fait qu'il n'y a que le 1er tableau dont la dernière ligne est rempli. Rempli toutes les dernière lignes de tous les tableaux

      Voici un code pour remplir tous les tableaux.

      A mettre dans le module de la Feuille1

      Option Explicit
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Not Application.Intersect(Target, Range("Q22:U24")) Is Nothing Then 'plage cellule
       Dim cellule As Range
      Range("Q22:U24").Select 'plage cellule
      'on vérifie si toutes les cellules sont remplies
      For Each cellule In Selection
      If cellule = "" Then
      MsgBox "La cellule: " & cellule.Address & " est vide, veuillez la remplir!", vbCritical, "Cellule vide" ' on quitte si cellule vide
      Exit Sub
      End If
      Next cellule
      'si toutes les cellules sont remplies on continue la procédure
       Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q22").Value
       Range("D" & Range("TOTAL1").Row - 1).Value = Range("Q23").Value
       Range("E" & Range("TOTAL1").Row - 1).Value = Range("Q24").Value
       'continuer le code pour les autres tableaux
       End If
       Range("Q22:U24").ClearContents ' on efface les données
      End Sub
      


      a toi de jouer

      @+
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sophie60400_1604 Messages postés 29 Statut Membre
     
    J'ai rempli toutes les lignes du tableau mais le problème persiste.
    Voici les messages qui apparaissent à l'écran :



    0
    1. sophie60400_1604 Messages postés 29 Statut Membre
       
      Le fichier modifié : https://www.cjoint.com/c/KGBp0mOm8AX
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > sophie60400_1604 Messages postés 29 Statut Membre
         
        Il faut d'abord supprimer dans le Module1 :

        Option Explicit
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Application.Intersect(Target, Range("Q22:Q24")) Is Nothing Then
         If Target.Value = "" Then Exit Sub
         Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q22").Value
         Range("D" & Range("TOTAL1").Row - 1).Value = Range("Q23").Value
         Range("E" & Range("TOTAL1").Row - 1).Value = Range("Q24").Value
         End If
        End Sub
        


        ensuite dans le module de la feuille1

        j'ai donné comme exemple:

        Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q22").Value
         Range("D" & Range("TOTAL1").Row - 1).Value = Range("Q23").Value
         Range("E" & Range("TOTAL1").Row - 1).Value = Range("Q24").Value



        et toi tu mets:

         Range("B" & Range("TOTAL1").Row - 1).Value = Range("Q22").Value
         Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q23").Value
         Range("D" & Range("TOTAL1").Row - 1).Value = Range("Q24").Value


        ce qui génère une erreur dans le module1 ici:

            Range("E" & Range("TOTAL1").Row - 1 & ":J" & Range("TOTAL1").Row - 1).SpecialCells(xlCellTypeConstants, 23).ClearContents  'efface les données garde les formules
        


        car la cellule E est vide on ne peut rien effacer!

        je viens de voir que cette ligne a été ajouté voir ceci:

        https://forums.commentcamarche.net/forum/affich-37285828-cacher-une-ligne-apres-insertion#9

        un autre problème dans le tableau jaune. En masquant les lignes il peut se trouver masqué

        Donc voir tout cela

        @+
        0
  7. sophie60400_1604 Messages postés 29 Statut Membre
     
    J'ai modifié les éléments cités ci-dessus : le message d'erreur n'apparaît plus. Merci.
    (Effectivement, j'ai du changer C/D/E pour B/C/D afin que mon calcul soit correct).

    Cependant, lorsque j'insère une nouvelle ligne dans chaque tableau et que je remplis le tableau jaune, les données insérées dans ce dernier n'apparaissent pas dans les nouvelles lignes.

    https://www.cjoint.com/c/KGBsfxzfkVX
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      C'est normal tu es sur les lignes 25,26 et 27!!!!!!!!!!!!!!!
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Chaque fois que tu ajoutes une ligne ton tableau jaune descend.

        Pour résoudre ce problème il faut déplacer ton tableau jaune en Q1:U3.

        J'ai essayé cela fonctionne!

        @+
        0
  8. sophie60400_1604 Messages postés 29 Statut Membre
     
    J'ai déplacé le tableau : le problème est résolu. Merci !
    Cependant, j'ai une autre demande : je souhaiterais faire le travail inverse avec la mise. Lorsque j'insère la mise dans les tableaux principaux (en colonne E), je souhaiterais que cette dernière apparaissent dans le tableau jaune, à savoir : mise du tableau bleu dans la cellule Q3, mise tableau orange dans la cellule R3, etc.

    J'ai essayé avec cette formule pour le tableau bleu mais ça ne fonctionne pas : Range("Q3").Value = Range("E" & Range ("TOTAL1").Row-1).Value

    Cordialement,

    https://www.cjoint.com/c/KGComx8MrNX
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      A mettre dans le module de la feuille1


      Option Explicit
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Not Application.Intersect(Target, Range("Q1:Q3")) Is Nothing Then
       If Target.Value = "" Then Exit Sub
       Range("B" & Range("TOTAL1").Row - 1).Value = Range("Q1").Value
       Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q2").Value
       Range("B" & Range("TOTAL2").Row - 1).Value = Range("R1").Value
       Range("C" & Range("TOTAL2").Row - 1).Value = Range("R2").Value
       Range("B" & Range("TOTAL3").Row - 1).Value = Range("S1").Value
       Range("C" & Range("TOTAL3").Row - 1).Value = Range("S2").Value
       Range("B" & Range("TOTAL4").Row - 1).Value = Range("T1").Value
       Range("C" & Range("TOTAL4").Row - 1).Value = Range("T2").Value
       Range("B" & Range("TOTAL5").Row - 1).Value = Range("U1").Value
       Range("C" & Range("TOTAL5").Row - 1).Value = Range("U2").Value
      End If
      End Sub
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
       Range("Q3").Value = Range("E" & Range("TOTAL1").Row - 1).Value
        Range("R3").Value = Range("E" & Range("TOTAL2").Row - 1).Value
         Range("S3").Value = Range("E" & Range("TOTAL3").Row - 1).Value
          Range("T3").Value = Range("E" & Range("TOTAL4").Row - 1).Value
           Range("U3").Value = Range("E" & Range("TOTAL5").Row - 1).Value
      End If
      End Sub
      


      Voilà se déclenche à chaque sélection dans la colonne E

      @+
      0
      1. sophie60400_1604 Messages postés 29 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Merci, ça fonctionne correctement.

        Enfin, pour rendre ce tableau plus fonctionnel, serait-il possible de remplacer la fonction "double clique" par un seul et même bouton qui actionnerait à la fois la première formule et la deuxième formule ?

        Formule 1 :

        "Option Explicit
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Application.Intersect(Target, Range("Q1:Q3")) Is Nothing Then
        If Target.Value = "" Then Exit Sub
        Range("B" & Range("TOTAL1").Row - 1).Value = Range("Q1").Value
        Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q2").Value
        Range("B" & Range("TOTAL2").Row - 1).Value = Range("R1").Value
        Range("C" & Range("TOTAL2").Row - 1).Value = Range("R2").Value
        Range("B" & Range("TOTAL3").Row - 1).Value = Range("S1").Value
        Range("C" & Range("TOTAL3").Row - 1).Value = Range("S2").Value
        Range("B" & Range("TOTAL4").Row - 1).Value = Range("T1").Value
        Range("C" & Range("TOTAL4").Row - 1).Value = Range("T2").Value
        Range("B" & Range("TOTAL5").Row - 1).Value = Range("U1").Value
        Range("C" & Range("TOTAL5").Row - 1).Value = Range("U2").Value
        End If
        End Sub"

        Formule 2 :

        "Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
        Range("Q3").Value = Range("E" & Range("TOTAL1").Row - 1).Value
        Range("R3").Value = Range("E" & Range("TOTAL2").Row - 1).Value
        Range("S3").Value = Range("E" & Range("TOTAL3").Row - 1).Value
        Range("T3").Value = Range("E" & Range("TOTAL4").Row - 1).Value
        Range("U3").Value = Range("E" & Range("TOTAL5").Row - 1).Value
        End If
        End Sub"

        En vous remerciant par avance,
        0
      2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > sophie60400_1604 Messages postés 29 Statut Membre
         
        supprimer le code du module de la feuille1

        Allez dans le module 1 et coller à la suite ceci:

        Sub affichagejeu()
        'Tableau jeu et cote
        Range("B" & Range("TOTAL1").Row - 1).Value = Range("Q1").Value
         Range("C" & Range("TOTAL1").Row - 1).Value = Range("Q2").Value
         Range("B" & Range("TOTAL2").Row - 1).Value = Range("R1").Value
         Range("C" & Range("TOTAL2").Row - 1).Value = Range("R2").Value
         Range("B" & Range("TOTAL3").Row - 1).Value = Range("S1").Value
         Range("C" & Range("TOTAL3").Row - 1).Value = Range("S2").Value
         Range("B" & Range("TOTAL4").Row - 1).Value = Range("T1").Value
         Range("C" & Range("TOTAL4").Row - 1).Value = Range("T2").Value
         Range("B" & Range("TOTAL5").Row - 1).Value = Range("U1").Value
         Range("C" & Range("TOTAL5").Row - 1).Value = Range("U2").Value
        End Sub
        Sub affichagemise()
        'tableau mise
        Range("Q3").Value = Range("E" & Range("TOTAL1").Row - 1).Value
          Range("R3").Value = Range("E" & Range("TOTAL2").Row - 1).Value
           Range("S3").Value = Range("E" & Range("TOTAL3").Row - 1).Value
            Range("T3").Value = Range("E" & Range("TOTAL4").Row - 1).Value
             Range("U3").Value = Range("E" & Range("TOTAL5").Row - 1).Value
        End Sub


        mettre 2 boutons et affecter ces 2 macros.

        J'ai mis 2 macros pour pouvoir saisir les mises après avoir rempli la nouvelle ligne.

        Je ne comprends pas très bien le fonctionnement, mais avec cela tu pourras l'arranger à ta façon

        @+
        0
  9. sophie60400_1604 Messages postés 29 Statut Membre
     
    Merci beaucoup. Tout fonctionne !
    0