Plusieurs conditions dans macro

Résolu
cha74 Messages postés 9 Statut Membre -  
cha74 Messages postés 9 Statut Membre -
Bonjour,
c'est la première fois que je créer une macro avec excel et je n'arrive pas à obtenir ce que je souhaite. J'aimerais que toutes les lignes de la feuille 1 qui contiennent la valeur Ø1.80 (dans la colonne C) soient collées dans la feuille "fØ1.80" Pour l'instant j'ai ceci (je me suis fortement inspirée d'une macro trouvée sur ce forum en adaptant):

Sub essais()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("fØ1.80").Activate

Col = "c"
NumLig = 1
With Sheets("Feuil1") ' feuille source '
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value <> "Ø1.80" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Sheets("fØ1.80").Cells(NumLig, 1).Insert Shift:=xlDown
End If
Next
End With
End Sub

Merci d'avance pour votre aide,
Charlotte

7 réponses

  1. foo
     
    Bonjour
    sans modele ses pas facile de voir
    la sur ton code ses pas <> mes =

    If .Cells(Lig, Col).Value = "Ø1.80" Then

    A+

    Maurice
    0
  2. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Pouvez-vous mentionner ce qui ne marche pas ?

    0
  3. cha74 Messages postés 9 Statut Membre
     
    Merci pour vos réponses. Désolée de ne pas avoir pu répondre ce week end mais je n'avais pas accès au fichier.

    Maurice : En effet en remplaçant <> par = j'obtiens le résultat escompté. J'ai donc créé la même macro mais pour les diamètres 2.00 et maintenant j'ai les lignes
    Col = "c" et end with qui se surlignent en rouge avec un point à coté dans la première macro (mais ça fonctionne quand même). Savez vous comment je peux y remédier?

    Le Pingou : En fait dans la feuille 1 j'ai un inventaire de stock de barres de plusieurs diamètres et je voulais que les lignes faisant référence au diamètre 80 apparaissent dans une feuille contenant déjà d'autres informations sur le diamètre 80. Ce qui ne marchait c'est que au lieu d'avoir les infos sur ce diamètre, j'avais les infos de tous les autres sauf celui ci.

    Une autre question : comment je peux choisir où sont insérées les lignes? Parce que là elles apparaissent en haut à gauche et me décale tout ce qui est déjà écrit sur la feuille fØ1.80

    Merci d'avance,
    Charlotte
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      est ce qu'il faut ventiler uniquement 1.80 ou tous les diamètres présents sur la feuille1?

      comme l'a demandé Maurice, voir ton classeur faciliterait les choses !

      pour joindre une pièce
      mettre le classeur sans données confidentielles en pièce jointe sur
      https://www.cjoint.com/
      puis copier l'adresse du lien et la coller dans le message de réponse

      sinon combien as tu de colonnes: A à .... ?
      0
  4. foo
     
    Bonjour

    il faut avoir un model pour voir comment tu a fait ca

    peux tu poster un exemple allégé et anonymé de ton fichier sur http://www.cjoint.com/

    A+

    Maurice
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cha74 Messages postés 9 Statut Membre
     
    Comme demandé voici le lien vers le classeur https://www.cjoint.com/?0GpogBbwi6P

    michel_m : Je voudrais tester le diamètre 1.80 parmi tous les autres de la feuille 1 et que les lignes correspondantes à ce diamètre apparaissent dans un tableau à gauche de celui déjà existant dans la feuille fØ1.80.
    Ensuite je ne sais pas si il faut faire plusieurs macro pour les autres diamètres (ce que j'ai commencé à faire mais ça ne fonctionne pas) ou si on peut tout faire dans une seule.

    Merci d'avance,
    Charlotte
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK c'est parti

      Un peu de patience
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Re, c'est exprès qu'il y a une colonne de moins dans les feuilles diam^tre (Etat du lot) ?

      c'est pratiquement terminé sauf cette cette question
      0
    3. cha74 Messages postés 9 Statut Membre
       
      Non ce n'est pas fait exprès. La colonne état du lot doit bien apparaître dans un tableau à droite de celui existant dans les feuilles de diamètre
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Comme dans la feuille 2.0, on a "état du lot", et dans les aurtres rien :-(
      c'est un vrai B.... dans l'espace de restitution colonne T à AB !!!!

      ci dessous macro sur restitution avec" etat du lot"
      basée sur la présentation (...)des feuilles 1.80 et 2.00

      Option Explicit
      
      Sub affectertouslesdiam()
      Dim Nbre As Byte, Cptr As Byte
      Dim T_diam(), Nb_diam As Integer
      Dim Lig As Integer, Cptr_lig As Integer, T_out(), Feuille As String * 6, Ligvid As Integer
      
      Application.ScreenUpdating = False
      'mémorise le nom des feuilles diamêtres
           Nbre = Sheets.Count
           For Cptr = 2 To Nbre
                ReDim Preserve T_diam(1 To Nbre)
                T_diam(Cptr - 1) = Right(Sheets(Cptr).Name, 5)
           Next
           For Cptr = 1 To UBound(T_diam)
                With Sheets(1)
                Nb_diam = Application.CountIf(.Columns("C"), T_diam(Cptr))
                If Nb_diam > 0 Then
                'recherche des diam^tre de la feuille en cours
                     Lig = 1
                     For Cptr_lig = 1 To Nb_diam
                          Lig = .Columns("C").Find(T_diam(Cptr), .Cells(Lig, "C"), xlValues).Row
                          T_out = .Range(.Cells(Lig, "A"), .Cells(Lig, "J")).Value
                          Feuille = "f" & T_diam(Cptr)
                          'restitution dans la feuille diam^tre en courd
                          With Sheets(Feuille)
                               Ligvid = .Columns("T").Find("", .Range("T2")).Row
                               .Range(.Cells(Ligvid, "T"), .Cells(Ligvid, "AB")) = T_out
                          End With
                     Next
                End If
                End With
           Next
      MsgBox " Répartition par diamètre terminée"
      
      End Sub
      
      0
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Si tu veux pour la dernière ligne remplie fait signe ( mais c'est pratiquement fait en extrayant de lignes de la macro ci dessus)
      0
  7. cha74 Messages postés 9 Statut Membre
     
    Merci beaucoup pour votre aide! C'est pile ce que je voulais comme résultat. (et désolée pour la présentation de certaines colonnes, j'avoue qu'elle n'était pas top)

    Encore merci d'y avoir passé du temps,
    Charlotte
    0
  8. foo
     
    Bonjour

    j'arrive un peux tard

    mes voila ton fichier modifier
    A toi de voir
    http://cjoint.com/?3GpqQmod2G3

    A+
    Maurice
    0
    1. cha74 Messages postés 9 Statut Membre
       
      Merci beaucoup quand même =) C'est la première fois que je poste sur un forum comme celui ci et je ne pensais pas qu'on m'aiderais autant.

      Charlotte
      0