Excel VBA selection lignes avec condition

Résolu/Fermé
linette44 Messages postés 23 Statut Membre -  
 urban -
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
Configuration: Windows XP
Firefox 1.5.0.11

44 réponses

  • 1
  • 2
  • 3
  1. solcosmico
     
    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
    13
    1. m77
       
      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
  • 1
  • 2
  • 3