Plusieurs conditions dans macro
Résolu
cha74
Messages postés
9
Statut
Membre
-
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
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
A voir également:
- Plusieurs conditions dans macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Je ne suis pas un robot confidentialité - conditions ✓ - Forum Mail
7 réponses
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
sans modele ses pas facile de voir
la sur ton code ses pas <> mes =
If .Cells(Lig, Col).Value = "Ø1.80" Then
A+
Maurice
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
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
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 à .... ?
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 à .... ?
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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
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
Encore merci d'y avoir passé du temps,
Charlotte