Ligne variable

Le
JRC
Re-bonjour à tous,

Et oui c'est encore moi malheureusement pour vous :)
Explication :

J'ai une plage de donnes de la cellule A3 à A19. Sur la colonne J il y a
des 9 de la cellule A3 à A15 puis des 10 de A16 à A19.

Mon but est de parcourir la colonne J jusque la cellule J15 et de
stocker cette adresse dans une variable pour la réutiliser par la suite.

Bien entendu ce J15 peut être un J16 ou J3000.

J'ai donc réalisé le code suivant MAISil s'arrête à la première ligne
qui contient un 9 et ne vas pas jusque la dernière



Private Sub trier1_Click()

Dim dtf As Long
Dim dtf1 As Long
Dim dtd As Long

Sheets("BD").Select

'Sélectionne la première ligne pleine
ActiveSheet.Range("A2").End(xlDown).Select
dtd = ActiveCell.Row
dtf = dtd

'Sélectionne tous les lignes dont le mois est septembre
While Range("J" & dtf).Value = 9

dtf = dtf + 1

Wend

'Test pour vérifier la valeur de la dernière ligne
MsgBox ("La valeur est " & dtf)


End Sub

Une idée?

Merci d'avance!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JPMonnier
Le #17299831
Bonjour,
Sub Adr()
For Each n In [j3:j30]
If n <> 9 Then
AD = n.Offset(-1, 0).Address
MsgBox AD
Exit Sub
End If
Next
End Sub

--
Cordialement

"JRC" news:e%
Re-bonjour à tous,

Et oui c'est encore moi malheureusement pour vous :)
Explication :

J'ai une plage de donnes de la cellule A3 à A19. Sur la colonne J il y a
des 9 de la cellule A3 à A15 puis des 10 de A16 à A19.

Mon but est de parcourir la colonne J jusque la cellule J15 et de stocker
cette adresse dans une variable pour la réutiliser par la suite.

Bien entendu ce J15 peut être un J16 ou J3000.

J'ai donc réalisé le code suivant MAISil s'arrête à la première ligne qui
contient un 9 et ne vas pas jusque la dernière...



Private Sub trier1_Click()

Dim dtf As Long
Dim dtf1 As Long
Dim dtd As Long

Sheets("BD").Select

'Sélectionne la première ligne pleine
ActiveSheet.Range("A2").End(xlDown).Select
dtd = ActiveCell.Row
dtf = dtd

'Sélectionne tous les lignes dont le mois est septembre
While Range("J" & dtf).Value = 9

dtf = dtf + 1

Wend

'Test pour vérifier la valeur de la dernière ligne
MsgBox ("La valeur est " & dtf)


End Sub

Une idée?

Merci d'avance!


JRC
Le #17300071
cher JPMonnier,

Je pense qu'effectivement votre solution marche mais l'idée est que je
ne sais pas combien de ligne il y aura. Certes je pourrai mettre
J3:J6300 mais afin d'optimiser le code (le rendre plus rapide
j'imagine), je souhaiterai incrémenter de 1 une variable jusqu'au moment
où ma condition de boucle n'est plus satisfaite.

Comment ça je suis casse-pieds?:)

Exceliement!


JPMonnier a écrit :
Bonjour,
Sub Adr()
For Each n In [j3:j30]
If n <> 9 Then
AD = n.Offset(-1, 0).Address
MsgBox AD
Exit Sub
End If
Next
End Sub



JPMonnier
Le #17300331
La boucle sort quand la condition n'est plus vraie par Exit Sub
Y a t'il des séries de 9 qui ne sont pas contigues en lignes ?

--
Cordialement

"JRC" news:ecz5%
cher JPMonnier,

Je pense qu'effectivement votre solution marche mais l'idée est que je ne
sais pas combien de ligne il y aura. Certes je pourrai mettre J3:J6300
mais afin d'optimiser le code (le rendre plus rapide j'imagine), je
souhaiterai incrémenter de 1 une variable jusqu'au moment où ma condition
de boucle n'est plus satisfaite.

Comment ça je suis casse-pieds?:)

Exceliement!


JPMonnier a écrit :
Bonjour,
Sub Adr()
For Each n In [j3:j30]
If n <> 9 Then
AD = n.Offset(-1, 0).Address
MsgBox AD
Exit Sub
End If
Next
End Sub





JRC
Le #17300321
Ça y est j'ai ENFIN trouvé, ça faiiiiit très plaisir!!!

Dans le précédent "programme", il faut remplacer

While Range("J" & dtf).Value = 9

'dtf = ActiveCell.Row + 1
dtf = dtf + 1
'dtf.Row = dtf.Row + 1

Wend
par

While ActiveSheet.Range("J" & dtf).Value = 9

'dtf = ActiveCell.Row + 1
dtf = dtf + 1
'dtf.Row = dtf.Row + 1

Wend

La différence réside dans la condition du début avec le ActiveSheet!!

Je vais aller bien me renseigner sur l'impact de cet ActiveSheet car
c'est la seconde fois qu'il me....

Si quelqu'un à des infos je suis preneur :)

Bon aprem!!


JRC a écrit :
cher JPMonnier,

Je pense qu'effectivement votre solution marche mais l'idée est que je
ne sais pas combien de ligne il y aura. Certes je pourrai mettre
J3:J6300 mais afin d'optimiser le code (le rendre plus rapide
j'imagine), je souhaiterai incrémenter de 1 une variable jusqu'au moment
où ma condition de boucle n'est plus satisfaite.

Comment ça je suis casse-pieds?:)

Exceliement!


JPMonnier a écrit :
Bonjour,
Sub Adr()
For Each n In [j3:j30]
If n <> 9 Then
AD = n.Offset(-1, 0).Address
MsgBox AD
Exit Sub
End If
Next
End Sub





JPMonnier
Le #17303941
ActiveSheet peut être remplacée par un autre objet tel que Sheets("Feuil1")
ou Sheets(1) ou une zone nommée dans un classeur [zone] ' Zone = J3:J30 par
exemple !
For Each n In [j3:j30] aurait pu être remplacé par For Each n In [Zone]
Zone étant un Nom est reconnu quelque soit la feuille active (ActiveSheet)
du classeur ou tu te trouves
Il est donc inutile d'activer la feuille (ActiveSheet) contenant le nom Zone
!

--
Cordialement

"JRC" news:e1$
Ça y est j'ai ENFIN trouvé, ça faiiiiit très plaisir!!!

Dans le précédent "programme", il faut remplacer

While Range("J" & dtf).Value = 9

'dtf = ActiveCell.Row + 1
dtf = dtf + 1
'dtf.Row = dtf.Row + 1

Wend
par

While ActiveSheet.Range("J" & dtf).Value = 9

'dtf = ActiveCell.Row + 1
dtf = dtf + 1
'dtf.Row = dtf.Row + 1

Wend

La différence réside dans la condition du début avec le ActiveSheet!!

Je vais aller bien me renseigner sur l'impact de cet ActiveSheet car c'est
la seconde fois qu'il me....

Si quelqu'un à des infos je suis preneur :)

Bon aprem!!


JRC a écrit :
cher JPMonnier,

Je pense qu'effectivement votre solution marche mais l'idée est que je ne
sais pas combien de ligne il y aura. Certes je pourrai mettre J3:J6300
mais afin d'optimiser le code (le rendre plus rapide j'imagine), je
souhaiterai incrémenter de 1 une variable jusqu'au moment où ma condition
de boucle n'est plus satisfaite.

Comment ça je suis casse-pieds?:)

Exceliement!


JPMonnier a écrit :
Bonjour,
Sub Adr()
For Each n In [j3:j30]
If n <> 9 Then
AD = n.Offset(-1, 0).Address
MsgBox AD
Exit Sub
End If
Next
End Sub







Publicité
Poster une réponse
Anonyme