Extraction de données VBA sous condition

Fermé
corlee Messages postés 1 Date d'inscription mardi 24 juillet 2012 Statut Membre Dernière intervention 24 juillet 2012 - 24 juil. 2012 à 12:06
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 24 juil. 2012 à 15:04
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

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
24 juil. 2012 à 15:04
Bonjour,

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
0