importer les dernieres données inseré dans une table - VB/VBA/VBS - Programmation
Marsh Posté le 06-02-2012 à 17:40:49
s'il vous plait vous auriez une idée de code qui permettrait de selectionner les données dont les dates ne dépasserai pas une semaine par exemple!!
Marsh Posté le 06-02-2012 à 19:29:43
tu peux faire un truc comme ca (faudra faire des modif!!)
datemax=date(now)-7
for i=1 to 5000 step1
if cells(i,1)>datemax then rows(i).delete
next i
l'idée est de supprimer toutes les dates supérieur à 1 semaine
Marsh Posté le 08-02-2012 à 10:48:50
86vomito33 aurais tu une idée de code qui permettrait de parcourir les ligne d'une feuilles excel et lorsqu'elle arrive a la fin revient a la premiere ligne!!!
jai essayé la condition while sheets("BL Interne" ).cells (j,1)<>"" mais elle s'arrete a la derniere ligne de ma feuille!!
Marsh Posté le 08-02-2012 à 11:21:37
abder92 a écrit : 86vomito33 aurais tu une idée de code qui permettrait de parcourir les ligne d'une feuilles excel et lorsqu'elle arrive a la fin revient a la premiere ligne!!! |
pour connaitre le nombre de lignes remplies de ta feuil1 tu peux utiliser le code suivant
nblignes=sheets("feuil1" ).range("A65000" ).end(xlup).row(s)
je ne sais plus s'il faut un "s" sur row, à tester
en ce qui concerne range("A65000" ) j'ai choisi A à titre d'exemple. choisi la colonne pour laquelle tu es sur qu'il y aura toujours des informations
Marsh Posté le 08-02-2012 à 11:24:51
avec la boucle for ... to ... next tu parcours les lignes 1 à 5000
tu pourras ensuite revenir à la ligne 1 automatiquement
Marsh Posté le 08-02-2012 à 11:56:08
merci je vois la solution!!! par contre pourrais tu stp ( bien que je sais je t'en ai deja trop demander) jai un code qui ne marche pas pourrais tu jeter un oeil et voir ce qui cloche c'est en rapport avc le tout premier pb!!
Sub CommandButton12_Click()
'Définition des variables
Dim j As Integer
j = 2
While Mid(Sheets("BL Interne" ).Cells(j, 4), 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Sheets("Feuil1" ).Cells(j, 5) = "ok"
If Val(Mid(Sheets("BL Interne" ).Cells(j, 4), 2)) <> Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then
Sheets("Feuil1" ).Cells(j, 5) = "Vérification nécessaires"
Sheets("Feuil1" ).Cells(j, 6) = Sheets("BL Interne" ).Cells(j, 10)
End If
j = j + 1
Wend
End Sub
Marsh Posté le 08-02-2012 à 12:05:49
ReplyMarsh Posté le 08-02-2012 à 12:14:19
abder92 a écrit : apparement l'instruction while ne marche pas....help!!! |
Code :
|
tu dis (via le code)
tant que a=b
faire ceci
mets des la premiere ligne ce "test" est faux donc il sort directement de la boucle
utilise plutot la boucle for ... to ... next
indice il t'en faudra 2
avec une seule je vois pas comment tu peux y arriver
Marsh Posté le 08-02-2012 à 12:33:32
loool ok tiens jai essayer cela jm'approche de la solution ou pas ??
Sub CommandButton12_Click()
'Définition des variables
Dim j As Integer
nblignes = Sheets("BL Interne" ).Range("A65000" ).End(xlUp).Row
For i = 2 To nblignes
j = 2
If Val(Mid(Sheets("BL Interne" ).Cells(j, 4), 2)) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then
Sheets("Feuil1" ).Cells(j, 5) = "ok"
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Else
Sheets("Feuil1" ).Cells(j, 5) = "Vérification nécessaires"
Sheets("Feuil1" ).Cells(j, 6) = Sheets("BL Interne" ).Cells(j, 10)
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
j = j + 1
End If
Next i
End Sub
Marsh Posté le 08-02-2012 à 14:26:50
ah merde desolé jai oublié de faire une modification!! tiens regarde celui la!!
Sub CommandButton12_Click()
'Définition des variables
Dim j As Integer
nblignes = Sheets("BL Interne" ).Range("A65000" ).End(xlUp).Row
nbligne = Sheets("BL Interne" ).Range("A65000" ).End(xlUp).Row
For i = 2 To nblignes
For j = 2 To nbligne
If Val(Mid(Sheets("BL Interne" ).Cells(j, 4), 2)) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then
Sheets("Feuil1" ).Cells(j, 5) = "ok"
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Else
Sheets("Feuil1" ).Cells(j, 5) = "Vérification nécessaires"
Sheets("Feuil1" ).Cells(j, 6) = Sheets("BL Interne" ).Cells(j, 10)
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
j = j + 1
End If
Next j
Next i
End Sub
Marsh Posté le 08-02-2012 à 14:32:37
desolé prends pas compte de clui que je viens de poster il est faux!!
regarde plus tot celui la!!!
nblignes = Sheets("BL Interne" ).Range("A65000" ).End(xlUp).Row
nbligne = Sheets("Export ANO_ITEM_LIV" ).Range("A65000" ).End(xlUp).Row
For i = 2 To nblignes
For j = 2 To nbligne
If Val(Mid(Sheets("BL Interne" ).Cells(i, 4), 2)) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2) Then
Sheets("Feuil1" ).Cells(j, 5) = "ok"
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Else
Sheets("Feuil1" ).Cells(j, 5) = "Vérification nécessaires"
Sheets("Feuil1" ).Cells(j, 6) = Sheets("BL Interne" ).Cells(j, 10)
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
j = j + 1
End If
Next j
Next i
Marsh Posté le 08-02-2012 à 14:46:21
pour etre sur que je sois sur la meme longueur d'onde
envoi avec cjoint le fichier avec les 10premieres lignes remplies comme tu le souhaite
Marsh Posté le 08-02-2012 à 14:47:12
non il me donne un résultat incohérent! suis je sur la bonne voie?? ou dois je m'y prendre autrement??
Marsh Posté le 08-02-2012 à 14:55:17
mon idée est de parcourir avec les "i" ta feuille bug ID
tu récupere le bug ID ( valeuràchercher)sheets("..." ).cells(i,2))
puis dans une seconde boucle
tu cherche cette valeur avec les j
des que tu la trouver tu copies les bonnes infos
tu sors de la boucle et tu passe à la ligne i suivante
ce qui donne le code suivant
for i=1 to nbligne
valeuràcherchée)=sheets("..." ).cells(i,2)
for j=1 to nblignes
if mid(sheets("..." ).cells(j,4),2)=valeuràcherche then
'tu inseres le bout de code corresponsant à ce que tu veux faire
goto sortie1
end if
next j
sortie1:
next i
du coup je te donne une partie du code parce que ca ne s'invente pas
Marsh Posté le 08-02-2012 à 15:00:32
voila dans la feuil3 il a le resultat que je voudrais avoir mon souci a moi c'est que dans la feuil1 il y a 7 lignes et dans la feuil 2 il y en a 24. je veux qu'il parcours la feuil 2 jusqu'a la fin tout en faisant la comparaison avc la feuil1 et si celle-ci arrive a la 7eme ligne qu'elle remonte automatiquement a la premiere tant que le parcours de la feuil 2 n'est pas fini!!
http://cjoint.com/?BBipaw2sDCG
Marsh Posté le 08-02-2012 à 15:44:35
il me sort une erreur de compilation sur le "next j" jvois pas pourquoi vu que le "for j..." est avant le "for i..." !!
nblignes = Sheets("BL Interne" ).Range("A65000" ).End(xlUp).Row
nbligne = Sheets("Export ANO_ITEM_LIV" ).Range("A65000" ).End(xlUp).Row
For j = 2 To nbligne
bug_id = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
For i = 2 To nblignes
If Val(Mid(Sheets("BL Interne" ).Cells(i, 4), 2)) = bug_id Then
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Sheets("Feuil1" ).Cells(j, 5) = "ok"
Else
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Sheets("Feuil1" ).Cells(j, 5) = "Vérification nécessaires"
Sheets("Feuil1" ).Cells(j, 6) = Sheets("BL Interne" ).Cells(i, 10)
GoTo sortie1
End If
Next j
sortie1: Next i
End Sub
Marsh Posté le 08-02-2012 à 17:02:42
image bien choisi
Marsh Posté le 08-02-2012 à 17:12:05
loooool merci vomito ms ds ce cas la conditions "if" est tjrs fausse jai joué le code ligne par ligne et j'ai vu qu'il allait directement au "else"!!! j'en peux plus !! regarde ce que sa me fait!!
http://cjoint.com/?BBirkMLEKQe
comme je tai dit je veux juste qu'il revienne a la premiere ligne dans la feuil1 quand il arrive a la fin tant que le parcours de la feuil2 n'est pas terminé!! merci pour tout deja !!! sincerement !!!
Marsh Posté le 08-02-2012 à 19:08:42
abder92 a écrit : voila dans la feuil3 il a le resultat que je voudrais avoir mon souci a moi c'est que dans la feuil1 il y a 7 lignes et dans la feuil 2 il y en a 24. je veux qu'il parcours la feuil 2 jusqu'a la fin tout en faisant la comparaison avc la feuil1 et si celle-ci arrive a la 7eme ligne qu'elle remonte automatiquement a la premiere tant que le parcours de la feuil 2 n'est pas fini!! |
quelle est la différence entre la ligne 2 et la ligne 3 de ta feuil 3
dans les 2 cas l'id bug est le meme mais dans un cas tu veux des vérif et dans l'autre tu n'en veux pas
ton test n'est pas bon. en quoi consiste t-il? ce n'est pas ce que tu as décrit précédemment
Marsh Posté le 09-02-2012 à 10:18:48
la difference réside dans l'id auxquelles elles sont comparer. la premiere ligne de la feuil3 est le resultat de de la comparaison en la premiere ligne de la feuil2 et la feuil1 et tu verras que la 1ere ligne de la feuil1 a pour id 13895 alrs que ds la feuil2 la 1ere ligne on trouve 13520!! comme je t'ai dit je veux que tant que le parcours de la feuil2 n'est pas terminé (tant qu'il n'arrive pas a la derniere ligne) que la feuil1 revienne automatiquement a la premiere ligne des que son parcours est terminé (donc des qu'elle arrive a sa derniere ligne)!!!
Marsh Posté le 09-02-2012 à 12:08:44
jai trouvé une autre façon de procéder mais c'est pas encore sa est ce que tu pourrais voir??
c'est au niveau de la condition que sa coince!
j = 2
i = 2
Dim FindBug As Range
bug_id = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2).Value
While Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1) <> ""
Set FindBug = Sheets("Export SVN" ).Cells.Find(bug_id, lookat:=xlPart)
If Sheets("Export SVN" ).Cells(FindBug.Row) = bug_id Then
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Sheets("Feuil1" ).Cells(j, 5) = "ok"
Else
Sheets("Feuil1" ).Cells(j, 1) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 1)
Sheets("Feuil1" ).Cells(j, 2) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 2)
Sheets("Feuil1" ).Cells(j, 3) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 3)
Sheets("Feuil1" ).Cells(j, 4) = Sheets("Export ANO_ITEM_LIV" ).Cells(j, 4)
Sheets("Feuil1" ).Cells(j, 5) = "Vérification nécessaires"
Sheets("Feuil1" ).Cells(j, 6) = Sheets("Export SVN" ).Cells(i, 5)
End If
j = j + 1
i = i + 2
Wend
End Sub
Marsh Posté le 06-02-2012 à 16:36:27
Bonjour ,
j'ai un petit probleme!!! en fait j'ai des données que j'importe depuis une base de données vers une feuille excel. Le soucis c'est que a chaque fois que je les importe il m'importe tout ce qui ce trouve dans la base et j'aimerai en fait moi a la place qu'il m'importe que les dernieres données inseré dans celle ci. Sachant que chaque ligne a contient un champs date.
pouvez vous m'aider la dessus??