Excel VBA selection lignes avec condition

Résolu/Fermé
linette44 Messages postés 23 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 20 mai 2008 - 1 avril 2007 à 22:15
 urban - 23 mai 2008 à 00:04
Bonjour,
Après un 1er message parti trop vite (voir linette 44, 21.45), voici mon problème.
Je désire sélectionner les lignes répondant à la valeur "contrat" dans la colonne A et différent de "816 et 819" dans la colonne C.
Les lignes sélectionnées devront être coupées et coller sur une nouvelle feuille.

J'ai également un deuxième problème sur un autre classeur :
Faire la somme des valeurs de chaque colonne(4 colonnes) sur la 1ère ligne vierge au bas du tableau.
Merci de votre aide

44 réponses

Bonsoir,

Je suis en train de travailler sur une macro similaire. Pour répondre à ta dernière question, oui, c'est normal qu'Excel copie toutes les lignes (même celles cachées par le filtre), ça m'est déjà arrivé. Et si c'est un bug, moi ça m'arrive souvent...

Voilà, alors j'ai un tableau avec:
- premiere colonne vide
- 2e colonne : Nom
- 3e colonne : Prénom
- 4e colonne : sexe
- 5e colonne : age

je veux copier les monsieurs dans une autre feuille de calcul et les dames de même dans une 3eme feuille de calcul (il faut que ces 2 feuilles de calcul existent déjà, tu peux les rajouter à la main, ou bien ajouter du code au début pour les créer). Les noms de mes feuilles de calcul sotn sheet1, sheet2 et sheet3.

voici mon code (certainement possible de l'améliorer) il faut le compléter avec le rajout des en-têtes de colonnes mais le principe est là :

Sub CreationOnglets()

' COPIE DES LIGNES DESIREES DANS LES FEUILLES DE CALCUL DEDIEES

Dim Rw As Range
Dim Ligne As Long

' Sélectionne l'ensemble des données (utile pour qu'Excel ne "réfléchisse" pas sur les 65000 lignes)

Sheets("Sheet1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

' Boucle qui va passer sur chaque ligne de la sélection afin de déterminer si des lignes contiennent le flag voulu
' puis copie dans une deuxième feuille de calcul

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 4).Value = "M" Then
Rw.Copy Destination:=Worksheets("Sheet2").Cells(Ligne, 1).EntireRow
End If

Next Rw

' Boucle qui va passer sur chaque ligne de la sélection afin de déterminer si des lignes contiennent le flag voulu
' puis copie dans une troisième feuille de calcul

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 4).Value = "F" Then
Rw.Copy Destination:=Worksheets("Sheet3").Cells(Ligne, 1).EntireRow
End If

Next Rw


' Supression des lignes vierges dans les feuilles de calcul récemment constituées

Sheets("Sheet2").Activate

With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r


Application.StatusBar = "- 20% - Macro en cours d'exécution, merci de patienter."

Sheets("Sheet3").Activate

With ActiveSheet.UsedRange
derLi = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = False
For r = derLi To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

' Pop-up d'avertissement de fin de macro.

MsgBox "Le fichier est prêt pour envoi. Veuillez effectuer un test de cohérence avant envoi.", vbOKOnly, "Macro terminée"

End Sub
12
bonjour,
Ton message date un pe mé je sui intéressée par ske tu a fé.
J'ai essayé de fer ton tableau com tu le décri au début de ton message
Voilà, alors j'ai un tableau avec:
- premiere colonne vide
- 2e colonne : Nom
- 3e colonne : Prénom
- 4e colonne : sexe
- 5e colonne : age

je veux copier les monsieurs dans une autre feuille de calcul et les dames de même dans une 3eme feuille de calcul (il faut que ces 2 feuilles de calcul existent déjà, tu peux les rajouter à la main, ou bien ajouter du code au début pour les créer). Les noms de mes feuilles de calcul sotn sheet1, sheet2 et sheet3.

Mais maleureusement ca ne marche pas car ca met erreur a ce moment là
' Boucle qui va passer sur chaque ligne de la sélection afin de déterminer si des lignes contiennent le flag voulu
' puis copie dans une deuxième feuille de calcul

For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1, 4).Value = "M" Then
Rw.Copy Destination:=Worksheets("Sheet2").Cells(Ligne, 1).EntireRow
End If


Je vais texpliké mé besoin pe etr et gsper poura tu m'aidé
Moi g un tableau avec diférent moteur ayant un numéro diférent. il son composé de diférente pièce et j'aimerai faire un tableau moteur par page
colone 1: numéro1 pièce
colone 2: numéro 2 pièce
colone 3: nom de la pièce
colone 7: n°commande
colone 11: date retour
colone 13: numéro du moteur avec lekel je ve trié par page (un moteur par page)
(lé colone vide sont rempli a la main apré avoir colecté les doné)

J'aimerai ka chak foi kil repair un numéro il me genère un tableau par raport a ce numéro en me copian ttes les ligne de ce numéro avec les données des pièces

c'est compréhensible?!

c'est le meme principe ke toi de metre les femme dan un tableau page 3 et les homme page 2 avec leur age et leur nom sof ke moi c'es un numéro par tableau avec toutes le pieces associées

Merci beaucoup de pouvoir maidé...
J'atend avec inpatience...
0