Copier cellules en fonction liste déroulante
Résolu
nogin
-
gino -
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
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
-
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 -
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". -
-
-
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 ?
-
-
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 ?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re,
D'ou le fait de mettre un fichier exemple avec tout ce qu'il faut (image par exemple) -
-
-
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-
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
-
-
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 -
Re
A testerPrivate 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 -
Avec ton fichier exemple, cela fonctionne
Il serait peut-être temps de placer un bon fichier ressemblant au max à l'original -
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-
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
-
-
-