Couper coller VBA supprimer formules
Bonsoir à tous, j’espère que malgré la situation tous le monde se porte pour le mieux.
En cette période de confinement, j’essaie d'améliorer mon excel. Seulement je bute sur un problème de couper/coller entre deux tableau et je n'ai trouvé la réponse nul part. Voici la situation:
Mon fichier comporte 3 feuilles: "import", "portefeuille" et "vendu".
- La feuille "import" possède les données qui se mettent à jours toutes les 60 minutes grâce à une requête internet. J'ai supprimé cette requête du fichier joint pour respecter le forum et ses règles de sécurité. Les données actualisés sont exploitées dans "portefeuille" --> pas de problème
- La feuille "portefeuille" contient un tableau ou je peux déjà ajouter et supprimer des lignes avec des macros que j'ai bidouiller.
Je souhaite ajouté un bouton permettant de basculer une ligne du tableau de "portefeuille" vers le tableau de "vendu" --> J'y suis arrivé en bricolant des information récupérées sur le forum, merci à tous!
Cependant le problème commence ici.
Lorsque je bascule la ligne de "portefeuille" à "vendu", celle-ci continue de récupérer les information en temps réel depuis la feuille "import".
J'en conclu donc qu'il faut utiliser un collage spécial (pastespecial il me semble?) pour ne récupérer que les valeurs du moment de la copie.
J'ai essayé énormément de chose sans résultat, il me semble que c'est impossible.
En effet je n'utilise pas de "coller" ou Paste dans mon code puisque je veux pouvoir sélectionner qu'une cellule pour couper la ligne entière.
Voici mon code (oui il est surement pas très optimisé ^^):
Sub Vendre() 'Fonctionne avec en-tête et en ne selectionnant qu'une cellule
Dim ChoixRows As Range
Dim AConfirmer
' Choix de la ligne
Set ChoixRows = Application.InputBox(Prompt:="Sélectionnez l'action à vendre", Title:="Choix de l'action", Type:=8)
' Sélection de la ligne
ChoixRows.EntireRow.Select
' Demande de confirmation
AConfirmer = MsgBox(Prompt:="Confirmez la vente de l'action", Title:="Confirmer?", Buttons:=vbYesNo + vbExclamation + vbDefaultButton2)
' Copie de la ligne
If AConfirmer = vbYes Then ChoixRows.EntireRow.Copy Sheets("Vendu").Range("4:4")
' Suppression de la ligne
ChoixRows.EntireRow.Delete
Sheets("Vendu").Select
Range("F4").Select
Selection.EntireRow.Insert
Range("A1").Select
End Sub
Je mets le fichier également.
Je continue de chercher, si quelqu'un peut me venir en aide ça serai génial.
Je ne suis pas très compétent sur excel, je découvre et essaye de m’intéresser au mieux, toute explication ou piste est la bienvenue.
Merci pour votre aide.
Bonne soirée et soyez prudents.
Quentin.
Bonjour,
un essai à minima:
Sub Vendre() 'Fonctionne avec en-tête et en ne selectionnant qu'une cellule
Dim ChoixRows As Range, ChoixVente As Range, Ligne As Long
Dim AConfirmer
With Worksheets("Portefeuille")
' Choix de la ligne
Set ChoixRows = Application.InputBox(Prompt:="Sélectionnez l'action à vendre", Title:="Choix de l'action", Type:=8)
' Sélection de la ligne
Ligne = ChoixRows.Row
Set ChoixVente = .Range("F" & Ligne & ":O" & Ligne)
'ChoixRows.EntireRow.Select
' Demande de confirmation
AConfirmer = MsgBox(Prompt:="Confirmez la vente de l'action", Title:="Confirmer?", Buttons:=vbYesNo + vbExclamation + vbDefaultButton2)
If AConfirmer = vbYes Then
' Copie de la ligne
Sheets("Vendu").Range("F4:O4") = ChoixVente.Value
' Suppression de la ligne
.Rows(Ligne).Delete
'ajout ligne vierge
Sheets("Vendu").Range("F4").EntireRow.Insert
End If
.Range("A1").Select
End With
End Sub
End Sub
A+
Bonsoir à tous,
AlgoPlus, ton code fonctionne parfaitement
J'essaye à présent de le comprendre, j'avoue avoir encore un peu de mal
J'ai juste supprimé le double "end sub"
J'y ai passé certainement plus de 5 heures... mais j'aurai appris beaucoup de choses quand même pendant mes essais!
Un grand merci pour ta générosité, je suis moi-même participatif sur d'autres forums dans des domaines bien différents (ceux ou je suis compétent
Encore merci, bonne soirée à tous, prenez soin de vous!
Quentin.