Microsoft 365 VBA : couper ligne d'un tableau pour coller les valeurs dans une autre feuille.

Lisette

XLDnaute Junior
Bonjour à tous,
j'espère que vous allez bien.

Je bloque sur un souci de VBA...

Explication de mon fichier
J'ai plusieurs Fiches Actions avec des numéros (1,2,3...) chacune a son onglet.
En plus de cela, dans l'onglet "Liste des Actions" j'ai un tableau qui regroupe toutes les actions susnommées. Je mets juste le numéro et ensuite il y a des liens avec Indirect pour aller chercher les infos à jour dans les onglets.
J'ai enfin un onglet "Actions Soldees" dans lequel je passe les lignes des actions... soldées... :)

Problématique
Lorsque je me trouve dans un onglet de Fiche : je souhaite pourvoir lancer une macro qui va :
- Couper la ligne correspondant à mon numéro de fiche dans l'onglet "Liste des Actions"
- En Coller uniquement les valeurs dans l'onglet Actions soldées.

J'ai testé plusieurs solutions existantes mais mon petit niveau m'empêche de les adapter correctement.
Auriez-vous une solution s'il vous plaît ?

Bonne journée,
Cordialement
Lisette
 

Pièces jointes

  • test copier coller vba.xlsx
    24.5 KB · Affichages: 4

Robert

XLDnaute Barbatruc
Bonsoir Lisette, bonsoir le foum,

je ne comprends pas pourquoi il faut passer par l'onglet LISTES DES ACTIONS puisque l'on a déjà tout dans l'onglet 6...
Une proposition :

VB:
Sub Macro1()
Dim OT As Worksheet 'déclare la variable OT (Onglet de Travail)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim R As Range 'déclare la variable R (Recherche)
Dim LS As Integer 'déclare la variable LS (Ligne Source)
Dim LD As Integer 'déclare la variable LS (Ligne Destination)

Set OT = Worksheets("6") 'définit l'onglet OT
Set OS = Worksheets("LISTES DES ACTIONS") 'définit l'onglet OS
Set OD = Worksheets("ACTIONS SOLDEES") 'définit l'onglet OD
'définit la recherche (Recheche la valeur de B4 de l'onglet OT dans la colonne 1 de l'onglet OS)
Set R = OS.Columns(1).Find(OT.Range("B4").Value, , xlValues, xlWhole)
If Not R Is Nothing Then 'si au moins une occurrence est touvée
    LS = R.Row 'définit la ligne source LS de la première occurrence trouvée
    Set R = Nothing 'redéfinit la recherche R
Else 'sinon
    'message
    MsgBox "Aucune occurrence trouvée de " & OT.Range("B4").Value & " dans l'onglet " & OS.Name & ". L'archivage ne peut pas être effectué !"
    Exit Sub 'sort de la procédure
End If
'définit la recherche (Recheche la valeur de B4 de l'onglet OT dans la colonne 1 de l'onglet OD)
Set R = OD.Columns(1).Find(OT.Range("B4").Value, , xlValues, xlWhole)
If Not R Is Nothing Then 'si au moins une occurrence est touvée
    LD = R.Row 'définit la ligne source LS de la première occurrence trouvée
    Set R = Nothing 'redéfinit la recherche R
Else 'sinon
    'message
    MsgBox "Aucune occurrence trouvée de " & OT.Range("B4").Value & " dans l'onglet " & OD.Name & ". L'archivage ne peut pas être effectué !"
    Exit Sub 'sort de la procédure
End If
OD.Cells(LD, 2).Resize(1, 4).Value = OS.Cells(LS, 2).Resize(1, 4).Value 'récupère les valeurs
MsgBox "Archivage effectué !" 'message
End Sub
 

Lisette

XLDnaute Junior
Bonjour Robert,
merci beaucoup pour votre réponse.

Un petit souci de mon côté au niveau d'une variable. Là dans l'exemple, c'est l'onglet 6, mais dans mon ficher complet, je génère des fiches qui ont donc des noms différents.
Peut-on lui attribuer quelque chose comme "activeworksheets" ou équivalent ? J'ai essayé mais Active worksheets ne fonctionne pas tel que :)

Merci encore pour votre aide
Lisette
 

Lisette

XLDnaute Junior
Merci Robert, malheureusement même dans le fichier teste, la macro de base ne semble pas fonctionner.
- Il me faut "couper" les données présentes dans la "Liste des actions" et là, les données restent dans "Liste des actions" mais elles sont bien collées dans "Actions soldees"
- Par contre, si je change le numéro de l'action par exemple, la macro me renvoie que l'action n'est pas existante dans l'onglet "Actions soldées" et ne peut donc pas être archivée. Bizarre :)
 

Discussions similaires

Statistiques des forums

Discussions
299 706
Messages
1 978 621
Membres
206 308
dernier inscrit
thian