Sélectionnez une ligne en entière VBA [Résolu/Fermé]

Signaler
-
Messages postés
9
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
13 juin 2008
-
Bonjour,
Je voulais savoir comment peut-on sélectionnez une ligne entière(comprenant plusieurs colonnes). Sachant que le critère pour sélectionnez ces lignes est que la valeur de la cellule de la 7ème colonne doit être différente de zéro.
merci de répondre assez rapidement

21 réponses

Bonjour

Soit i le n° de la ligne en question

If range("G" & i)<>0 then Rows(i & ":" & i).Select

A+.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Le problème c'est qu'il peut avoir plusieurs lignes, il n'yen a jamais qu'une seule.
Et ton programme amigo ne donne rien :(
Salut,

Ce que je t'ai donné c'est juste le code pour selectionner une ligne donnée, ce n'est pas un programme ni meme une macro.

Pour faire une macro, il faut plus d'éléments, ou commence le tableau et ou il finit, une fois la ligne séléctionnée qu'est ce qu'on en fait... Tu ne le dis pas. On suppose alors que tu sais monter une macro et qu'il te manque un petit coup de pouce pour te débloquer.

Voilà, si tu ne connais rien en programmation, il faut le dire aussi.

Ciao.
Merci A.lupin, ca sélectionne toutes les lignes du tableaux mais est-ce que c'est possible de faire sélectionner seulement les lignes du tableau qui ont en colonne Y des cellules avec des valeurs non nulles ? Si oui vous pouvez me l'indiquer svp.
Et oui je suis novice en programmation donc c'est pour ça que votre aide m'est très précieuse
Utilisateur anonyme
les réponses 1 et 5 solutionnent ton problème.
seulement voilà ...

ou tu es claire sur ta demande et tu souhiates que quelqu'un fasse ton code et là il faut en dire plus,
ou alors tu adaptes les reponses données à tes particularités.
> Utilisateur anonyme
Giheller, peux-tu mieux m'expliquer comment écrire la partie du programme qui règlerait se problèmes stp.
Merci d'avance
Utilisateur anonyme > Nico0044
le code du premier message est :
for (i;i<limite;i++)
if (range("G"+cstr(i)).value = 0 then Rows(" + cstr(i) + ":" + cstr(i) + ").Select
next i

je l'explique

le for i est une variable qui boucle sur chaque ligne de la feuille.
limite est une variable qui limite la boucle.
exemple de limite : si la colonne A est toujours remplie la limite de la boucle sera la première cellule vide de la colonne A.
C'est pourquoi dans un autre message je dis qu'il faut adapter le code à tes spécifictés

le if teste si la colonne 7 (G) de la ligne i est à 0
si oui Rows(" + cstr(i) + ":" + cstr(i) + ").Select sélectionne la colonne

et là s'arr^te mon code car la ligne est sélectionnée (ta demande initiale et ensuite ta problématique est de faire ce que tu souhaites dans ton classeur.

ces ligne sont donc à inclure dans une macro qui sera déclanchée soit en cliquen sur un bouton soit à l'ouverture du classeur en fonction de ce que tu auras écrit.
> Utilisateur anonyme
en fait pour mon programme, on sélectionne les lignes avec un bouton.
Lorsque l'on appuie sur le bouton, le programme doit lire les cellules de la colonne Y, et si le contenu de ces cellules est différent de zéro alors le programme sélectionne la ligne entière. Donc voila ca me pose un gros problème.Giheller j'ai essayer avec ton programme mais la syntaxe ne plait pas à excel. Si vous avez une idée n'hésitez pas merci beaucoup.
(dsl d'être chiant :( )
Utilisateur anonyme > Nico0044
mille excuses pour la syntaxe, j'ai mélangé plusieurs langages de programmation.
Voici mon début de programme:

Private Sub Barchiver_Click()
Dim Limite As Long
Range("Y2").Select
While (ActiveCell.Value <> 0)
ActiveCell.Offset(1, 0).Select
Wend
Limite = (ActiveCell.Row - 1)
Range("A2:AA" & Limite).Select

Avec ce programme cela selectionne bien les premières lignes avec des cellules de la colonne Y différent de zéro. Mais des qu'il y a un zéro il ne vérifie pas les lignes suivantes!!
Svp personne ne sait...
Bonjour,

Voilà ta macro

Elle surlignera en jaune les lignes dont la colonne G est différente de 0.
Colle ce code dans un module et execute par le menu Outis -> Macros ...
Sub Macro1()
Dim i As Integer, fin As Integer
    ActiveCell.SpecialCells(xlLastCell).Select
    fin = ActiveCell.Row
    Range("A1").Select   
    For i = 1 To fin
        If Range("G" & i).Value <> 0 Then
        Range(i & ":" & i).Select
        With Selection.Interior
           .ColorIndex = 6
           .Pattern = xlSolid
        End With
        End If
    Next
    Range("A1").Select
End Sub


Fallait pas te vexer, y-a pas de mal à dire qu'on ne sait pas.

Salut.
Ce n'est pas grave giheller mais est ce que tu peux m'aider ou pas sur du VBA, voici le debut de mon programme:

Private Sub Barchiver_Click()
Dim Limite As Long
Range("Y2").Select
While (ActiveCell.Value <> 0)
ActiveCell.Offset(1, 0).Select
Wend
Limite = (ActiveCell.Row - 1)
Range("A2:AA" & Limite).Select

Avec ce programme cela selectionne bien les premières lignes avec des cellules de la colonne Y différent de zéro. Mais des qu'il y a un zéro il ne vérifie pas les lignes suivantes!!

ou sinon comme solution c faire un tri de cette colonne en décroissant, comme ca les valeurs zéro seraient en dernière position, mais comment programmer pour que le tri se fasse des l'ouverture d'excel???
Bon appétit v manger lol
Bonjour,

Voilà ta macro

Elle surlignera en jaune les lignes dont la colonne Y est différente de 0.

Private Sub Barchiver_Click()
Dim i As Integer, fin As Integer
ActiveCell.SpecialCells(xlLastCell).Select
fin = ActiveCell.Row
Range("A1").Select
For i = 1 To fin
If Range("Y" & i).Value <> 0 Then
Range(i & ":" & i).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
Range("A1").Select
End Sub

Tu ne veux pas essayer?
Merci bcp amigo mais juste une question:
au lieu de mettre les lignes en jaune on ne peut pas les faire sélectionner(les mettre en surbrillance bleu donc) ou ce n'est pas possible?

Bonjour,

Tres etrange, je ne vois pas l'intervention que j'ai fait hier !

Lupin
Si, on peut le faire
Sub Private Sub Barchiver_Click
Dim i As Integer, fin As Integer
Dim sel As String
sel = ""
    ActiveCell.SpecialCells(xlLastCell).Select
    fin = ActiveCell.Row
    Range("A1").Select
    For i = 1 To fin
        If Range("Y" & i).Value <> 0 Then
           sel = sel & i & ":" & i & ","
        End If
    Next
    sel = Left(sel, Len(sel) - 1)
    Range(sel).Select
'        With Selection.Interior
'           .ColorIndex = 6
'           .Pattern = xlSolid
'        End With
End Sub

Seulement dès que tu clic dans une cellule ça se déselectionne.

A la place de
' With Selection.Interior
' .ColorIndex = 6
' .Pattern = xlSolid
' End With
il faut que tu y mettes les instructions traitant la selection, par exemple copier, effacer ....
qu'est ce que tu veux faire exactement?
Je voudrais que les lignes sélectionnées soient coupées et mises dans un autres fichier excel
C'est possible?
merci bcp amigo de bien répondre
Oui , tout est possible, mais combien vous etes sur ce coup?

On va tout mélanger. On temine d'abord avec Nico0044, après on verra.

A+.
Je suis tout seul lol
Ah! bon, parce que il y a Basketteur qui vient de poser une question sur le même sujet, je pensais qu'il y avait toute une équipe sur l'affaire.

Sinon ça marche comme tu voulais?
Oui ca met en jaune les lignes ayant une valeur différentes de zéro, c'est bien; dommage que je ne puisse pas les sélectionner au lieu de les mettre en jaune.voila merci encore
Tu n'as pas pris la dernière macro

j'ai enlevé la partie du code qui met en couleur.
il ne faut pas enlever l'apostrophe en début de ligne sinon tu remet la couleur.
l'apostrophe veut dire que la ligne est un commentaire et elle ne sera pas executée.

je te recopie la macro sans les commentaires

Sub Private Sub Barchiver_Click
Dim i As Integer, fin As Integer
Dim sel As String
sel = ""
    ActiveCell.SpecialCells(xlLastCell).Select
    fin = ActiveCell.Row
    Range("A1").Select
    For i = 1 To fin
        If Range("Y" & i).Value <> 0 Then
           sel = sel & i & ":" & i & ","
        End If
    Next
    sel = Left(sel, Len(sel) - 1)
    Range(sel).Select
End Sub


Cette fois ça marche?
Messages postés
61
Date d'inscription
dimanche 23 mars 2008
Statut
Membre
Dernière intervention
16 août 2010
2
Moi je vous trouve tres intelligent ceux qui repondre a ces question...
Merci bcp pour ton aide amigo mais ton dernier programme permettant de sélectionner les lignes ne fonctionnent pas.
Il y a peut être une modif que tu ne m'a pas dit.
Bonjour,

C'est bien la colonne Y que tu doit tester? Vérifie que cette colonne contient des nombres et s'il y a bien des lignes avec la colonne Y à 0.00

Avant ça mettait les lignes en jaune, maintenant il ne fait que séléctionner les lignes. Mais dés que tu clic dans le tableau la séléction est perdue. C'est pour ça qu'il faut compléter la macro par une action portant sur la séléction.
Dans l'exemple, l'action était de surligner en jaune la sélection. Toi, il faut que tu lui dise ce qu'il faut faire à la place.

A+.
Et on peut lui dire de couper ces données et de les coller dans un autre fichier?
Oui bien sur,

Ce que tu vas faire, c'est enregistrer une macro de cette action, ensuite on pourra intégrer le code de cette macro à la macro qui automatise ça pour tout le tableau.

Menu Outils Macros Nouvelle Macro , Donner un nom (ex: macro1)
Faire manuellement la sélection de quelques lignes qui correspondent au critère (col Y <> 0)
Couper, aller dans la feuille choisie et Coller.
Quand c'est fait, arreter l'enregistrement. Menu Outils Macros Arreter l'engeristrement.

Dans VB editor Ouvrir le module ou se trouve la macro enregistrée et postes moi le code.

A+.
Voila
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 25/03/2008 par colindeverdj
'

'
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 63
ActiveWindow.ScrollRow = 84
ActiveWindow.ScrollRow = 105
ActiveWindow.ScrollRow = 126
ActiveWindow.ScrollRow = 147
ActiveWindow.ScrollRow = 188
ActiveWindow.ScrollRow = 209
ActiveWindow.ScrollRow = 271
ActiveWindow.ScrollRow = 313
ActiveWindow.ScrollRow = 334
ActiveWindow.ScrollRow = 375
ActiveWindow.ScrollRow = 417
ActiveWindow.ScrollRow = 458
ActiveWindow.ScrollRow = 479
ActiveWindow.ScrollRow = 521
ActiveWindow.ScrollRow = 583
ActiveWindow.ScrollRow = 625
ActiveWindow.ScrollRow = 708
ActiveWindow.ScrollRow = 791
ActiveWindow.ScrollRow = 812
ActiveWindow.ScrollRow = 874
ActiveWindow.ScrollRow = 999
ActiveWindow.ScrollRow = 1040
ActiveWindow.ScrollRow = 1186
ActiveWindow.ScrollRow = 1227
ActiveWindow.ScrollRow = 1394
ActiveWindow.ScrollRow = 1456
ActiveWindow.ScrollRow = 1622
ActiveWindow.ScrollRow = 1685
ActiveWindow.ScrollRow = 1851
ActiveWindow.ScrollRow = 2038
ActiveWindow.ScrollRow = 2163
ActiveWindow.ScrollRow = 2350
ActiveWindow.ScrollRow = 2433
ActiveWindow.ScrollRow = 2641
ActiveWindow.ScrollRow = 2724
ActiveWindow.ScrollRow = 2911
ActiveWindow.ScrollRow = 3098
ActiveWindow.ScrollRow = 3161
ActiveWindow.ScrollRow = 3327
ActiveWindow.ScrollRow = 3410
ActiveWindow.ScrollRow = 3576
ActiveWindow.ScrollRow = 3639
ActiveWindow.ScrollRow = 3805
ActiveWindow.ScrollRow = 3888
ActiveWindow.ScrollRow = 4075
ActiveWindow.ScrollRow = 4262
ActiveWindow.ScrollRow = 4325
ActiveWindow.ScrollRow = 4491
ActiveWindow.ScrollRow = 4553
ActiveWindow.ScrollRow = 4678
ActiveWindow.ScrollRow = 4740
ActiveWindow.ScrollRow = 4886
ActiveWindow.ScrollRow = 4990
ActiveWindow.ScrollRow = 5052
ActiveWindow.ScrollRow = 5177
ActiveWindow.ScrollRow = 5219
ActiveWindow.ScrollRow = 5322
ActiveWindow.ScrollRow = 5364
ActiveWindow.ScrollRow = 5468
ActiveWindow.ScrollRow = 5510
ActiveWindow.ScrollRow = 5614
ActiveWindow.ScrollRow = 5717
ActiveWindow.ScrollRow = 5759
ActiveWindow.ScrollRow = 5884
ActiveWindow.ScrollRow = 5905
ActiveWindow.ScrollRow = 6008
ActiveWindow.ScrollRow = 6050
ActiveWindow.ScrollRow = 6154
ActiveWindow.ScrollRow = 6299
ActiveWindow.ScrollRow = 6341
ActiveWindow.ScrollRow = 6445
ActiveWindow.ScrollRow = 6507
ActiveWindow.ScrollRow = 6591
ActiveWindow.ScrollRow = 6632
ActiveWindow.ScrollRow = 6736
ActiveWindow.ScrollRow = 6757
ActiveWindow.ScrollRow = 6861
ActiveWindow.ScrollRow = 6944
ActiveWindow.ScrollRow = 6985
ActiveWindow.ScrollRow = 7048
ActiveWindow.ScrollRow = 7069
ActiveWindow.ScrollRow = 7152
ActiveWindow.ScrollRow = 7193
ActiveWindow.ScrollRow = 7256
ActiveWindow.ScrollRow = 7297
ActiveWindow.ScrollRow = 7360
ActiveWindow.ScrollRow = 7443
ActiveWindow.ScrollRow = 7464
ActiveWindow.ScrollRow = 7526
ActiveWindow.ScrollRow = 7547
ActiveWindow.ScrollRow = 7588
ActiveWindow.ScrollRow = 7609
ActiveWindow.ScrollRow = 7651
ActiveWindow.ScrollRow = 7713
ActiveWindow.ScrollRow = 7734
ActiveWindow.ScrollRow = 7755
ActiveWindow.ScrollRow = 7775
ActiveWindow.ScrollRow = 7817
ActiveWindow.ScrollRow = 7838
ActiveWindow.ScrollRow = 7879
ActiveWindow.ScrollRow = 7900
ActiveWindow.ScrollRow = 7962
ActiveWindow.ScrollRow = 8025
ActiveWindow.ScrollRow = 8066
ActiveWindow.ScrollRow = 8087
ActiveWindow.ScrollRow = 8129
ActiveWindow.ScrollRow = 8150
ActiveWindow.ScrollRow = 8191
ActiveWindow.ScrollRow = 8212
ActiveWindow.ScrollRow = 8233
ActiveWindow.ScrollRow = 8274
ActiveWindow.ScrollRow = 8316
ActiveWindow.ScrollRow = 8357
ActiveWindow.ScrollRow = 8378
ActiveWindow.ScrollRow = 8399
ActiveWindow.ScrollRow = 8420
ActiveWindow.ScrollRow = 8441
ActiveWindow.ScrollRow = 8461
ActiveWindow.ScrollRow = 8482
ActiveWindow.ScrollRow = 8503
ActiveWindow.ScrollRow = 8524
ActiveWindow.ScrollRow = 8544
ActiveWindow.ScrollRow = 8586
ActiveWindow.ScrollRow = 8628
ActiveWindow.ScrollRow = 8648
ActiveWindow.ScrollRow = 8669
ActiveWindow.ScrollRow = 8690
ActiveWindow.ScrollRow = 8711
ActiveWindow.ScrollRow = 8732
ActiveWindow.ScrollRow = 8752
ActiveWindow.ScrollRow = 8773
ActiveWindow.ScrollRow = 8794
ActiveWindow.ScrollRow = 8815
ActiveWindow.ScrollRow = 8836
ActiveWindow.ScrollRow = 8856
ActiveWindow.ScrollRow = 8877
ActiveWindow.ScrollRow = 8919
ActiveWindow.ScrollRow = 8939
ActiveWindow.ScrollRow = 8960
ActiveWindow.ScrollRow = 8981
ActiveWindow.ScrollRow = 9002
ActiveWindow.ScrollRow = 9023
ActiveWindow.ScrollRow = 9043
ActiveWindow.ScrollRow = 9064
ActiveWindow.ScrollRow = 9085
ActiveWindow.ScrollRow = 9106
ActiveWindow.ScrollRow = 9127
ActiveWindow.ScrollRow = 9147
ActiveWindow.ScrollRow = 9189
ActiveWindow.ScrollRow = 9210
ActiveWindow.ScrollRow = 9230
ActiveWindow.ScrollRow = 9251
ActiveWindow.ScrollRow = 9272
ActiveWindow.ScrollRow = 9293
ActiveWindow.ScrollRow = 9314
ActiveWindow.ScrollRow = 9334
ActiveWindow.ScrollRow = 9355
ActiveWindow.ScrollRow = 9376
ActiveWindow.ScrollRow = 9397
ActiveWindow.ScrollRow = 9418
ActiveWindow.ScrollRow = 9438
ActiveWindow.ScrollRow = 9459
ActiveWindow.ScrollRow = 9480
ActiveWindow.ScrollRow = 9501
ActiveWindow.ScrollRow = 9521
ActiveWindow.ScrollRow = 9542
ActiveWindow.ScrollRow = 9563
ActiveWindow.ScrollRow = 9584
ActiveWindow.ScrollRow = 9605
ActiveWindow.ScrollRow = 9625
ActiveWindow.ScrollRow = 9646
ActiveWindow.ScrollRow = 9625
ActiveWindow.ScrollRow = 9605
ActiveWindow.ScrollRow = 9584
ActiveWindow.ScrollRow = 9563
ActiveWindow.ScrollRow = 9542
ActiveWindow.ScrollRow = 9521
ActiveWindow.ScrollRow = 9501
ActiveWindow.ScrollRow = 9480
ActiveWindow.ScrollRow = 9459
ActiveWindow.ScrollRow = 9480
ActiveWindow.ScrollRow = 9501
ActiveWindow.ScrollRow = 9521
ActiveWindow.ScrollRow = 9542
ActiveWindow.ScrollRow = 9563
Range("A2:Y9564").Select
Range("Y9564").Activate
Selection.Copy
Application.WindowState = xlMinimized
Application.WindowState = xlNormal
End Sub
C'était pas la peine d'en faire autant, la partie interessante est là:

Range("A2:Y9564").Select <--- la selection
Range("Y9564").Activate <--- clic dans la cellule Y9564, la selection est perdue
Selection.Copy <--- copie la cellule Y9564

Tu vois le problème?Tu clic dans une cellule et tu perd la selection.
Et après qu'est ce qu'on fait? Où coller la la séléction? Tu n'as pas été jusq'au bout.

A+.
Après il faut coller la sélection dans un fichier( n'importe lequel), c'est pour historiser.
voila merci bcp encore une fois
Bon OK,

alors essaye comme ça:
Sub Private Sub Barchiver_Click
Dim i As Integer, fin As Integer
Dim sel As String
sel = ""
    ActiveCell.SpecialCells(xlLastCell).Select
    fin = ActiveCell.Row
    Range("A1").Select
    For i = 1 To fin
        If Range("Y" & i).Value <> 0 Then
           sel = sel & i & ":" & i & ","
        End If
    Next
    sel = Left(sel, Len(sel) - 1)
    Range(sel).Select
    Selection.Copy
End Sub

Ensuite ouvre un classeur excel et va dans Edition Coller. Tu auras peut-etre des lignes blanches intercallées parce que la copie se fait à l'identique de la sélection.
Si tu colles dans un fichier texte, la mise en forme est perdue, il y a des chances que ce soit illisisble.

Ammuse toi bien.
Messages postés
9
Date d'inscription
jeudi 12 juin 2008
Statut
Membre
Dernière intervention
13 juin 2008
2
Bonjour Amigo,

Je suis avec intérêt la discussion que tu as eu avec Nico0004.
Je suis en train de me mettre au VBA mais il semble que j'ai le même niveau de nico... (débutant)

En ce qui me concerne, je cherche à faire une selection automatique d'une colonne et non d'une ligne.
Les différences par rapport au cas de NICO:
Je souhaite dans mon cas, faire une selection automatique d'une unique colonne (colonne A) jusqu'a la dernière cellule du tableau. En effet, entre la cellule A1 et la cellule A999, il peut y avoir des cellules vides. j'ai donc besoin de trouvez une macro qui ne s'arrete pas à la première celulle vide rencontré.
Ensuite, je veux à partir de cette selection faire des calculs. Disons une somme.

Merci des renseignements que tu pourras m'apporter!