Copier cellules en fonction liste déroulante

Résolu
nogin -  
 gino -
Bonjour,

je souhaite copier les cellules présentent sur une feuille 2,3 ou 4 en fonction d'une choix de liste déroulante en feuille 1. Si le chois de la liste est 1 je souhaiterai copier les cellules de la feuille 1 etc..

J'ai crée un bouton VBA en dessous de la liste déroulante avec le code suivant :

Sub Saisie()
Sheets("Feuille 1").Range("A16:N94").Value = Sheets(Sheets("Feuille 1").Range("H5").Value).Range("B1:S64").Value
End Sub

Celui-ci ne fonctionne pas et indique : "l'indice n'appartient pas à la sélection".

pouvez-vous m'aider s'il vous plait ? Merci par avance

Configuration: Windows / Firefox 95.0

14 réponses

  1. M-12 Messages postés 1349 Statut Membre 285
     
    Teste cette macro à la place de l'autre
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Ws As Worksheet
        Dim Sh As String
        Dim shp As Shape
      If Not Application.Intersect(Target, Range("E5")) Is Nothing Then
        For Each shp In ActiveSheet.Shapes
          'If Not (shp.Name Like "Image*") And shp.Type = 13 Then shp.Delete
          If shp.Type <> 8 Then shp.Delete
        Next shp
        Sh = Target.Value
        Sheets(Sh).Range("A1:L58").Copy ActiveSheet.Range("A16")
        End If
    End Sub
    1
    1. gino
       
      C'est génial merci beaucoup vous m'enlevez une belle épine du pied !
      0
  2. M-12 Messages postés 1349 Statut Membre 285
     
    Bonjour,

    Un p’tit classeur avec 10/15 données anonymisées serait mieux pour régler le soucis

    Allez dans https://www.cjoint.com/
    Cliquez sur "PARCOURIR" pour sélectionner le classeur
    Clic le bouton "CREER LE LIEN"
    Clic droit quand le lien est créé "COPIER LE LIEN"
    Sur le post Clic droit "Coller".
    0
    1. Nogin
       
      Le voici, merci beaucoup ! https://www.cjoint.com/c/LAlrImiIM0L

      En gros je souhaite coller sur Feuill1 les valeurs des feuilles A,B ouC en fonction du choix de la liste déroulante en Feuill1
      0
  3. M-12 Messages postés 1349 Statut Membre 285
     
    0
    1. nogin
       
      wouah c'est exactement ça !! Merci beaucoup ! Bonne continuation.
      0
    2. nogin
       
      Bonjour, je me permets de revenir vers vous car je n'ai toujours pas trouver ma solution finale. En effet, le copie/colle fonctionne très bien. Néanmoins les images s'empilent les unes aux autres. Y a-t'il un moyen de : lorsque le choix de la liste déroulante change, copier le choix correspondant ET supprimer les images présentes sur la plage à copier svp ?
      0
  4. nogin
     
    Ca fonctionne bien sur mon fichier. Merci ! Néanmoins il me reste un problème.. dans une feuille que je copie il y a une image. Elle se copie mais par contre quand je change de choix elle reste et se superpose à celle de l'autre choix.. Comment puis-je faire pour supprimer l'image collée en même temps svp ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. M-12 Messages postés 1349 Statut Membre 285
     
    Re,
    D'ou le fait de mettre un fichier exemple avec tout ce qu'il faut (image par exemple)
    0
    1. nogin
       
      Bonjour, voici le lien d'un nouveau fichier : https://www.cjoint.com/c/LBdivDx4CcL

      J'ai mis des images dans chaque feuille et j'aimerai qu'elles se copie en fonction du choix de la liste déroulante en feuille 1. Lorsque le choix change, l'image précédente doit se supprimer.
      0
  7. M-12 Messages postés 1349 Statut Membre 285
     
    Ne voyant pas les autres formes, difficile de répondre
    0
    1. gino
       
      Dans le fichier que j'ai envoyé il y a une fleche à coté de l'image sur la feuil2. dans mon vrai fichier j'ai plusieurs flèche de ce type.
      0
  8. M-12 Messages postés 1349 Statut Membre 285
     
    Remplace par cette macro
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Ws As Worksheet
        Dim Sh As String
        Dim shp As Shape
      If Not Application.Intersect(Target, Range("E5")) Is Nothing Then
        For Each shp In ActiveSheet.Shapes
          'If Not (shp.Name Like "Image*") And shp.Type = 13 Then shp.Delete
          If shp.Type <> 8 Then shp.Delete
        Next shp
        Sh = Target.Value
        Sheets(Sh).Range("A1:L58").Copy ActiveSheet.Range("A16")
        End If
    End Sub
    
    0
    1. gino
       
      Désolée de vous solliciter de nouveau. Je me suis précipitée et n'est pas vu que TOUTES les images de la feuille se supprimaient. Hors j'ai des images fixent qui malgré le changement dans la liste déroulante ne doivent pas changer. Par exemple dans le fichier ci après j'ai rajouté une image à droite de la liste déroulante qui doit rester fixe : https://www.cjoint.com/c/LBdkOP7cNpL

      J'ai essayé de trouver la solution seule mais ca n'a pas marché.

      J'ai tapé :


      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim Ws As Worksheet
      Dim Sh As String
      Dim shp As Shape
      If Not Application.Intersect(Target, Range("E5")) Is Nothing Then
      For Each shp In ActiveSheet.Range("A20:M38").Shapes
      'If Not (shp.Name Like "Image*") And shp.Type = 13 Then shp.Delete
      If shp.Type <> 8 Then shp.Delete
      Next shp
      Sh = Target.Value
      Sheets(Sh).Range("A1:L58").Copy ActiveSheet.Range("A16")
      End If
      End Sub
      0
  9. M-12 Messages postés 1349 Statut Membre 285
     
    A tester
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Ws As Worksheet
        Dim Sh As String
        Dim shp As Shape
      If Not Application.Intersect(Target, Range("E5")) Is Nothing Then
        For Each shp In ActiveSheet.Shapes
          If shp.Type <> 8 And shp.Name <> "Picture 2" Then shp.Delete
        Next shp
        Sh = Target.Value
        Sheets(Sh).Range("A1:L58").Copy ActiveSheet.Range("A16")
        End If
    End Sub
    
    
    0
    1. gino
       
      Ca ne fonctionne pas car j'ai 9 images en tout et je ne connais pas leur nom. Les seules images à supprimer se trouvent sur la plage "A20:N38" de la feuille active.
      0
  10. M-12 Messages postés 1349 Statut Membre 285
     
    Re
    A tester
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Ws As Worksheet
        Dim Sh As String
        Dim shp As Shape
      If Not Application.Intersect(Target, Range("E5")) Is Nothing Then
        For Each shp In ActiveSheet.Shapes
          If Not Application.Intersect(shp.TopLeftCell, Range("A16:N50")) Is Nothing Then
            shp.Delete
            Exit For
          End If
        Next shp
        Sh = Target.Value
        Sheets(Sh).Range("A1:L58").Copy ActiveSheet.Range("A16")
        End If
    End Sub
    
    0
    1. gino
       
      Ca ne fonctionne pas, dans ce cas, les images de la plage A20 à L38 ne se suppriment pas
      0
  11. M-12 Messages postés 1349 Statut Membre 285
     
    Avec ton fichier exemple, cela fonctionne
    Il serait peut-être temps de placer un bon fichier ressemblant au max à l'original
    0
    1. gino
       
      La c'est exactement mon fichié où j'ai changé les infos et rajouté votre dernier code : https://www.cjoint.com/c/LBdp7wB7nXL
      0
  12. M-12 Messages postés 1349 Statut Membre 285
     
    Re,
    Je pourrais tester longtemps, la cellule de changement n(est pas en E5 comme avec le 1er fichier, mais en L5
    D'autres part, qu'elles sont les images à ôtés sur le fichier, celle qui se trouven en A20, et/ ou les autres du dessus, et les replacer où?
    Des explications claires et précises
    0
    1. gino
       
      Oui sur mon vrai fichier j'avais modifié pour mettre en L5.

      Les images à oter à chaque fois que la liste déroulante change c'est l'image précédemment copié depuis onglets "Table1" "Table 2" etc.. Puisque avec ce nouveau choix l'image correspondant au choix s'affiche au même emplacement.

      Les images dans le tableau en haut de page doivent rester ainsi que l'image "parasol" en bas de page

      Merci
      0
  13. M-12 Messages postés 1349 Statut Membre 285
     
    Chez moi, cela fonctionne, sinon je n'aurais pas posté
    0
    1. gino
       
      Oui oui je comprends pas de soucis merci.
      0