Soyez le premier à donner votre avis sur cette source.
Snippet vu 25 427 fois - Téléchargée 30 fois
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer 'indice de parcours de toutes les valeurs du trie Dim temp As String ' Dim cell As Variant Dim lettreCellule As String Dim lettreColone As String Dim nbColonesApres As Integer Dim nbColonesAvant As Integer Dim derCellule As String Dim premCellule As String '''''''''''''''''''''''''''''''''''''à modifier''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'cellule du début du trie cell = "D2" 'nombre de colone apres la cellule pour le tri nbColonesApres = 3 'nombre de colone avant la cellule pour le tri nbColonesAvant = 3 '''''''''''''''''''''''''''''''fin modification''''''''''''''''''''''''''''''' 'colone où l'on effectue le trie lettreColone = Mid(cell, 1, 1) 'adresse de la cellule modifiée temp = ActiveCell.Address 'on récupere la lettre de la cellule modifiée lettreCellule = Mid(temp, 2, 1) 'on regarde si l'on a modifié une valeur 'de notre colone où on veut effectuer le tri. If lettreCellule = lettreColone Then 'on compte le nombre de cellules jusqu'à ce que l'on en trouve une vide Range(cell).Select i = 0 While ActiveCell.Offset(i, 0).Text <> "" i = i + 1 Wend 'on selection toute la zone premCellule = Range(cell).Offset(0, -nbColonesAvant).Address derCellule = Range(cell).Offset(i - 1, nbColonesApres).Address Range(premCellule & ":" & derCellule).Select 'on trie notre séléction Selection.Sort Key1:=Range(cell), Order1:=xlAscending, Header:=xlNo, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End If End Sub
17 mai 2007 à 19:18
Je suis néophite en programmation. C'est exactement la fonction que je cherche. Pourrait-on m'expliquer pas à pas comment la mettre dans mon tableur?
Merci
28 oct. 2006 à 14:51
beh en fait son but dans sa boucle c'est de rechercher la première cellule vide.
Concernant ma fonction, DerLigne sera égale à la dernière ligne utilisée car la fonction Find recherche "", donc rien, donc cellule vide.
Tout ceci à partir de B65536 et en remontant.
Sachant que j'ai mis moins 1 à la fin, le résultat sera donc la dernière ligne utilisée.
Tu dis "Mais ensuite, tu as nothing en retour à un Find avec argument "" pour valeur recherchée"
>> beh non, si dans la colonne B, il n'y a aucune valeur, tu auras une erreur, facilement gérable, sinon, tu auras bien la derniere ligne utilisée.
Je t'invite à faire le test, place qques données dans la colonne B, et place même des cellules vides entre plusieurs :
Dim DerLigne
DerLigne = Sheets(1).Columns(2).Find("", [B65536], , , xlByRows, xlPrevious).Row - 1
Pour le Column, oui, c'est une faute d'orthographe.
Sinon, pour l'auteur de cette source, en me relisant j'y suis allé un peu fort sur un terme "ambigüe" :
Quand je dis "code inutile, ce n'est pas vraiment une source...", il faut entendre plutôt "source inutile, ce n'est pas vraiment une source... mais plutôt un snippet".
Exemple de qques snippets que j'ai déposé (et pas en source) :
http://www.codyx.org/snippet_rechercher-ligne-vide-dans-excel_205.aspx
http://www.codyx.org/snippet_rechercher-premiere-ligne-ou-colonne-vide-partir-cellule_206.aspx
@++
28 oct. 2006 à 14:09
As-tu pris le temps de vérifier ta proposition ?
Si elle fonctionne, dis nous comment?
En premier, ce n'est pas Column mais Columns (une faute de synthaxe est toujours excusable),
Mais ensuite, tu as nothing en retour à un Find avec argument "" pour valeur recherchée.
@+
27 oct. 2006 à 14:38
code inutile, ce n'est pas vraiment une source....
De plus, ta boucle
While ActiveCell.Offset(i, 0).Text <> ""
i = i + 1
Wend
bouffe des resources pour rien :
il faut préférer :
DerLigne = Sheets(N°).Column(N°).Find("", [B65536], , , xlByRows, xlNext).Row - 1
Tout ton code est perfectible et là ça calcul même quand la mauvaise colonne est sélectionnée (perd du temps et des ressources).
Bref, t'as encore des choses à travailler...
++
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.