Extraction de données VBA sous condition
corlee
Messages postés
1
Statut
Membre
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour
je suis bloqué dépuis deux jours quelqu'un pourrais t'il m'aidé?
en effet j'ai un fichier excel avec deux feuil (feuil 1 et feul2) a l'aide d'un bouton j'aimerais importer des donné de feuil 1 vers feuil2 mais malheuresent l'importation est conditioné par les cellule d'une colone
cette colone a des sorte de mois (TK09) qui indique ou placé le chiffre la valeur de la celul suivant dans la feuil 2
voici mon bout de code l'orsque je compil rien ne se passe et n'indique pas d'erreur aussi je joint le fichier pourmieux me fair comprendre.
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim x As Integer 'déclare la variable x (incrément de ligne)
Dim dest As Range 'déclare la variable dest (DESTination)
dl = Sheets("import").Cells(Application.Rows.Count, 13).End(xlUp).Row 'définir la dernière ligne éditée de la colonne
For x = 2 To dl Step 1
'si la valeur de la cellule est égale à la valeur
If Cells(x, 13).Value = "HR_1009_V" Then
Set dest = Sheets("Feuil2").Cells(Application.Rows.Count, 11).End(xlUp).Offset(1, 0) 'définit la cellule de destination
Range(Cells(x, 1), Cells(x, 13)).Copy dest 'copie les deux cellules de la ligne et les colle dans dest
End If 'fin de la condition
Next x 'prochaine cellule de la boucle
End Sub
EN exemple:
Feuil 1
A B C D E
Toto Box bling 15
Tata bing blang tk09 12
TITI alk bleu tk08 10
TORDshi bour tk7 7
TOUSome bana tk2 20
TER offset bilabon
TEM sup ser tk1 10
En A et E les cellules a importer dans feuil2 . A la colone A de feuil2 pour le A de (Feuil1) et la colonne du bon mois de feuil 2 pour le E de( feuil1).
Malheureusement sa aurais été facile mais il fo prendre en compte les condition de la D de feuil 1 qui indique le moi ou les chiffre en E devron étre importer.
C'est-à-dire l'orsque l'on parcour la colone en D de la feuille 1 si la cellule parcouru est égale a tk09 le chiffre 12 se met au mois de septembre de la feuil 2 et en colone A on a tata de la meme feuil 2
De meme si la cellule parcouru en colone D de la feuil 1 est égale a TK08 le chiffre 10 se met o mois de aout et en colone A on TITI le tous sur la feuil 2 bien sur
si la celule en D parcouru est vide le code met le chiffre 15 par exemple dans une colone en feuil 2 appeler ATTENTE precédé en colone A de TOTO
je voudrais implémenter le code par un bouton. Mercie.
Feuil 2
Nom Janvier FeVR Mar avril mais juin juillet aout septembre octobre novembre décembre ATTENTE
TOTO 15
TATA 12
TITI 10
Merci pour votre aide car j'y arrive pas
je suis bloqué dépuis deux jours quelqu'un pourrais t'il m'aidé?
en effet j'ai un fichier excel avec deux feuil (feuil 1 et feul2) a l'aide d'un bouton j'aimerais importer des donné de feuil 1 vers feuil2 mais malheuresent l'importation est conditioné par les cellule d'une colone
cette colone a des sorte de mois (TK09) qui indique ou placé le chiffre la valeur de la celul suivant dans la feuil 2
voici mon bout de code l'orsque je compil rien ne se passe et n'indique pas d'erreur aussi je joint le fichier pourmieux me fair comprendre.
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim x As Integer 'déclare la variable x (incrément de ligne)
Dim dest As Range 'déclare la variable dest (DESTination)
dl = Sheets("import").Cells(Application.Rows.Count, 13).End(xlUp).Row 'définir la dernière ligne éditée de la colonne
For x = 2 To dl Step 1
'si la valeur de la cellule est égale à la valeur
If Cells(x, 13).Value = "HR_1009_V" Then
Set dest = Sheets("Feuil2").Cells(Application.Rows.Count, 11).End(xlUp).Offset(1, 0) 'définit la cellule de destination
Range(Cells(x, 1), Cells(x, 13)).Copy dest 'copie les deux cellules de la ligne et les colle dans dest
End If 'fin de la condition
Next x 'prochaine cellule de la boucle
End Sub
EN exemple:
Feuil 1
A B C D E
Toto Box bling 15
Tata bing blang tk09 12
TITI alk bleu tk08 10
TORDshi bour tk7 7
TOUSome bana tk2 20
TER offset bilabon
TEM sup ser tk1 10
En A et E les cellules a importer dans feuil2 . A la colone A de feuil2 pour le A de (Feuil1) et la colonne du bon mois de feuil 2 pour le E de( feuil1).
Malheureusement sa aurais été facile mais il fo prendre en compte les condition de la D de feuil 1 qui indique le moi ou les chiffre en E devron étre importer.
C'est-à-dire l'orsque l'on parcour la colone en D de la feuille 1 si la cellule parcouru est égale a tk09 le chiffre 12 se met au mois de septembre de la feuil 2 et en colone A on a tata de la meme feuil 2
De meme si la cellule parcouru en colone D de la feuil 1 est égale a TK08 le chiffre 10 se met o mois de aout et en colone A on TITI le tous sur la feuil 2 bien sur
si la celule en D parcouru est vide le code met le chiffre 15 par exemple dans une colone en feuil 2 appeler ATTENTE precédé en colone A de TOTO
je voudrais implémenter le code par un bouton. Mercie.
Feuil 2
Nom Janvier FeVR Mar avril mais juin juillet aout septembre octobre novembre décembre ATTENTE
TOTO 15
TATA 12
TITI 10
Merci pour votre aide car j'y arrive pas
A voir également:
- Extraction de données VBA sous condition
- Fuite données maif - Guide
- Excel cellule couleur si condition texte - Guide
- Effacer les données de navigation sur android - Guide
- Trier des données excel - Guide
- Données personnelles - Accueil - Windows
1 réponse
Bonjour,
Un exemple de code sans le test If Cells(x, 13).Value = "HR_1009_V" Then
parce qu'il manque une explication.
Bon courage
Un exemple de code sans le test If Cells(x, 13).Value = "HR_1009_V" Then
parce qu'il manque une explication.
Sub test()
Dim cel As Range, Plage As Range
'derniere ligne F1
DLF1 = Worksheets("feuil1").Cells.Find("*", , , , xlByRows, xlPrevious).Row
'Definition de la Plage a tester
Set PlageF1 = Worksheets("feuil1").Range("A1:A" & DLF1)
With Worksheets("feuil1")
For Each cel In PlageF1
'derniere ligne F2
DLF2 = Worksheets("feuil2").Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1
'Test pour Numero du mois
If .Cells(cel.Row, 4) <> "" Then
Mois = Mid(.Cells(cel.Row, 4), 3, 2)
Else
Mois = 13
End If
'Ecriture F2
Worksheets("feuil2").Cells(DLF2, 1) = .Cells(cel.Row, 1)
Worksheets("feuil2").Cells(DLF2, 1 + Mois) = .Cells(cel.Row, 5)
Next cel
End With
End Sub
Bon courage