dambroise
Messages postés8Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention30 mars 2009
-
26 mars 2009 à 10:42
sugvesta
Messages postés6Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention30 mars 2009
-
30 mars 2009 à 15:30
Bonjour,
Je dispose actuellement d'un tableau dans la feuille "Composants" (tableau qui va de C9 à F1000 : C9 étant la ligne donnant le nom des colonnes).
La colonne C indique le composant, la D indique la pression, la E indique le débit et la F indique le temps.
Ce tableau sert de base pour une liste déroulante : la liste déroulante se référe à la colonne C.
Les composants doivent impérativement être les un à la suite des autres, sinon le bouton qui me permet de mettre à jour ma liste déroulante ne prend pas les derniers composants.
Ce que je voudrais, c'est un code qui regarde le tableau et qui supprime les lignes où le temps est égale à zéro, et qui remonte les lignes (où le temps est différent de 0) pour quelles se suivent.
De cette façon, la liste déroulante continuera de fonctionner normalement.
Je suis un pure débutant, si je pouvais avoir le code avec des explications pour esayer de le comprendre, ce serait extra.
sugvesta
Messages postés6Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention30 mars 2009 30 mars 2009 à 15:09
Mon code etait un peu con, sorry. En fait il faut incrementer le i uniquement si tu n as pas supprimer la ligne sinon des que tu as deux 0 a la suite comme il saute une ligne apres une suppression, bah tu vas pas supprimer ton 0. voila le bon code:
Sub deletion()
Dim i As Integer ' Declaration de la variable i comme etant un entier
i = 3 ' Initialisation de i(valeur pour laquelle ta boucle while va commencer)
While Cells(i, 3) <> "" ' Tant que la celllule (i,3) (ligne i, colonne3 cad C) est non vide(Le signe <> signifie different)
If Cells(i, 6) = 0 Then ' Si la cellule (i,6)=0 (colonne F donc)
Rows(i).Select 'selection de la ligne i
Selection.Delete 'On efface la selection
Else: i = i + 1' on incremente la valeur de i UNIQUEMENT SI ON N A PAS SUPRRIME LA LIGNE pour refaire les memes operation pour le i suivant,la boucle retourne jusqu on arrive a un i ou la cellule(i,3) est vide
dambroise
Messages postés8Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention30 mars 2009 27 mars 2009 à 20:37
Je te remercie de l'interêt que tu viens de me porter, mais comme je l'ai dis, je suis un vrai débutant.
Je viens de copier les lignes de codes que tu m'as donné, mais ca marche pas, je vais voir si je m'en sors.
Au pire je reviendrais vers toi.
dambroise
Messages postés8Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention30 mars 2009 29 mars 2009 à 15:28
Salut,
Je reviens vers toi après avoir essayer différents codes. J'ai enregistré une macro : "Suppression" et j'ai recopié ton code dans une autre macro : "Deletion" (pour l'avoir sous la main).
J'ai ensuite essayer de faire la macro qui m'interesse, mais je n'y arrive pas.
Aurais-tu le temps et l'envie de me l'écrire?
Sub Suppression()
'
' Suppression Macro
'
'
Range("C10:G1000").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-18
Range("E3").Select
End Sub
Sub deletion()
' C est assez simple, tu peux enregistrer une macro poour ce genre de trucs et la retaper un peu.
' ton code serait
Dim i As Integer
While Cells(i, 3) <> ""
If Cells(i, 6) = 0 Then
Rows(i).Select
Selection.Delete
End If
i = i + 1
Wend
End Sub
Sub SelectionComposants()
Dim i As Integer
Range("C10:G1000").Select
While Cells(i, 3) <> ""
If Cells(i, 6) = 0 Then
Rows(i).Select
Selection.Delete
End If
i = i + 1
Wend
End Sub
Merci d'avance.
Damien
Vous n’avez pas trouvé la réponse que vous recherchez ?
sugvesta
Messages postés6Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention30 mars 2009 30 mars 2009 à 10:17
Selection.clearcontemts ne fait que supprimer le contetnu de scellules et non la ligne toute entiere
En fait la macor que j avais ecrit marche bien , j ai juste oublie d initialiser la valeur de i. Vu que ton tableau commence en C9 il faut mettre i= 9 juste en dessous de dim i as integer.Voila le code commente
Sub deletion()
Dim i As Integer ' Declaration de la variable i comme etant un entier
i = 9 ' Initialisation de i(valeur pour laquelle ta boucle while va commencer)
While Cells(i, 3) <> "" ' Tant que la celllule (i,3) (ligne i, colonne3 cad C) est non vide(Le signe <> signifie different)
If Cells(i, 6) = 0 Then ' Si la cellule (i,6)=0 (colonne F donc)
Rows(i).Select 'selection de la ligne i
Selection.Delete 'On efface la selection
End If 'fin du "SI"
i = i + 1 ' on incremente la valeur de i pour refaire les memes operation pour le i suivant,la boucle retourne jusqu on arrive a un i ou la cellule(i,3) est vide
Wend
End Sub
dambroise
Messages postés8Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention30 mars 2009 30 mars 2009 à 13:54
Salut,
Je te remercie, par contre j'ai un petit soucis avec ce code, je m'explique : ce code supprime les premières lignes où le temps est égale à 0, mais c'est comme s'il s'arretait dès qu'il rencontre un temps différents de 0. Meme si après, j'ai d'autres lignes avec un temps nul, il ne les efface pas.
Je suis obligé de relancé la macro pour qu'il les efface au fur et à mesure. Je dois la lancé environs 6 fois pour que le résultat attendu soit le bon.
Si tu as le temps, et toujours l'envie de m'aider, ne te gêne surtout pas .
Merci.
dambroise
Messages postés8Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention30 mars 2009 30 mars 2009 à 15:19
Comment veux tu que je te dise quoique que ce soit pour une erreur, alors que tu cherche à m'aider!
Je serais un vrai c.. si je fesais ca.
Tout ca pour te dire un grand MERCI, je viens de l'essayer : ca n'a pas marcher, mais j'ai modifié la valeur initiale de i grâce aux explications (i 9 et non i 3).
Je le signale juste pour ci cela peut aider quelqu'un d'autre.
sugvesta
Messages postés6Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention30 mars 2009 30 mars 2009 à 15:30
No prob, quand on se fait un peu chier au bureau autant aider les autres. Ce petit code est pas complique mais il comprend deja quelques trucs interessants pour apprendre les rudiments de la programmation, je te conseille d essayer de comprendre comment il marche.(Effectivement j avais mis i=3 parce que je testait sur un tableau de mon cote).
A plus