Transfert des données d'une feuille Excel à une autre selon conditions [Résolu]

Signaler
Messages postés
23
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
27 octobre 2020
-
Messages postés
23
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
27 octobre 2020
-
Bonjour,

J'aimerais pouvoir appliquer un code VBA pour transférer des données de la feuille1 vers la feuille2 seulement si la colonne "État" contient la valeur "OK"

- Par exemple :

Les lignes 5 et 7 et 8 de mon tableau contiennent la Valeur "OK" dans la colonne "État" dans la feuille1

Résultat ==> Transférer de A5 à J5 et de L5 à Q5 (feuille1) >> vers >> (Feuille2) la dernière ligne vide de la colonne A à J et de M à R (Faire de même avec les lignes 7 et 8 de la feuille1)

Voici le lien de téléchargement du modèle sur quoi je veux appliquer le code VBA :
https://onedrive.live.com/redir?resid=24D5D8E53C3C23B1!215939&authkey=!AKpwzHJE_B2JzrI&ithint=file%2cxlsx&e=NzLam4

Je vous remercie d'avance.



Configuration: Windows / Firefox 81.0

3 réponses

Messages postés
7210
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 janvier 2021
601
Bonjour,

faire une boucle si la colonne "État" contient la valeur "OK":

https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/

Copier de A5 à J5 et de L5 à Q5 (feuille1):

https://docs.microsoft.com/fr-FR/office/vba/api/Excel.Range.Copy

coller (Feuille2) la dernière ligne vide de la colonne A à J et de M à R :

https://excel-malin.com/tutoriels/vba-tutoriels/vba-trouver-la-derniere-cellule-utilisee/

voilà


Messages postés
23
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
27 octobre 2020

Rebonjour,

Merci infiniment pour votre aide, je vais me renseigner et se baser sur ces liens pour en tirer une conclusion pour résoudre mon problème.
Messages postés
23
Date d'inscription
lundi 28 juillet 2014
Statut
Membre
Dernière intervention
27 octobre 2020

C'est bon, j'ai trouvé une solution excellente pour mon problème avec le code suivant :
Option Explicit
Sub transfer_orders()
Application.ScreenUpdating = False

Dim f1 As Worksheet, f2 As Worksheet, data, extrait, i, j, n, debut
Set f1 = Sheets("Feuil1")
Set f2 = Sheets("Feuil2")
debut = 3
data = f1.Range("A" & debut).CurrentRegion.Value
n = 0
ReDim extrait(1 To UBound(data, 2) + 1, 1 To 1)
For i = 2 To UBound(data)
If data(i, 11) = "OK" Then
f1.Range("K" & debut + i - 1) = "Transféré"
n = n + 1
ReDim Preserve extrait(1 To UBound(data, 2) + 1, 1 To n)
For j = 1 To 10
extrait(j, n) = data(i, j)
Next
For j = 12 To UBound(data, 2)
extrait(j + 1, n) = data(i, j)
Next
End If
Next
f2.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(UBound(extrait, 2), UBound(extrait)) = Application.Transpose(extrait)

Application.ScreenUpdating = True
End Sub