Comment inclure dans ma macro une 3e condition

Fermé
chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023 - 25 mai 2016 à 01:01
chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023 - 26 mai 2016 à 23:58
Bonjour a tous,
J'aurais besoin de votre aide.

J'ai deux macro qui fonctionnaient très bien. Mais maintenant je veux la modifier car j'ai trois conditions au lieu de deux.

Ma macro dit mettre un filtre, scroll la période AVR-16 dans la colonne I et
Scroll les Y dans la colonne AH (J'aimerais ajouter) et Scroll les cellules qui ont quelques choses d'écrit la la colonne AK pour l'instant j'ai inscrit AK vide mais C'est le contraire que je veux pour AK .Des qu'il y a quelque chose d'écrit.

ensuite delete les lignes qui remplissent ces trois conditions.

Mes deux macro sont différente mais je veux seulement inclure la troisième condition.

Je sais comment faire si elle serais vides mais pas avec du texte.

Je vous remercie sincèrement pour votre aide.
voici la premiere

Dim Dernligne As Long
Dernligne = ActiveSheet.range("A" & Rows.Count).End(xlUp).Row
For N = Dernligne To 1 Step -1
If range("A" & N) <> "" And range("I" & N) = "AVR-16" And range("AH" & N) = "Y" And range("AK" & N) = "" Then
Rows(N & ":" & N).Select
Selection.Delete Shift:=xlUp
End If



L'autre macro est un peu différente.

Option Explicit

Const coA = "A"
Const coN = "I"
Const coY = "AF"
Const N = "AVR-16"
Const Y = "Y"
Const lideb = 2

Sub finance()
'
' finance Macro
'

Sheets("factures").Select
Sheets("factures").Copy Before:=Sheets(1)
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Rows("1:1").Select
Selection.AutoFilter
Dim li As Long, lifin As Long
Application.ScreenUpdating = False
With ActiveSheet
lifin = .range(coA & Rows.Count).End(xlUp).Row
For li = lifin To lideb Step -1
If .range(coN & li) = N And .range(coY & li) = Y Then
Rows(li).Delete
End If
Next li
End With

Ici j'avais deux conditions maintenant j'en ai trois.
C'est la même chose que mon autre macro. 3 conditions pour effacer soit AVR-16, Y et s'il y a quelque chose d'inscrit dans les cellules de la colonne AR. Je pense que je dois changer mon option explicit mais je ne sais pas quoi faire. Aussi je sais que je dois ajouter quelque chose entre If .range(coN & li) = N And .range(coY & li) = Y Then mais je ne sais pas quoi?

merci mille fois de me repondre...
A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
Modifié par f894009 le 25/05/2016 à 07:11
Bonjour,

Qui a ecrit ce code, vous ou une autre personne ??
Dans les deux cas, vous avez la solution du test dans la premiere macro et pour la constante dans la deuxieme, non ???
0
chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023
25 mai 2016 à 12:33
Bonjour FB974009

Dans ma première macro,(C'est moi)

j'avais ajouté s'il n'y a rien dans la colonne AK mais c'est le contraire que je veux. Je veux sélectionner les cellules qui a quelques choses d'inscrit dedans.

Ce que je veux faire c'est insérer un filtre, sélectionner les cellules dans la colonne I qui ont AVR-16 et sélectionner les cellules dans la colonne AH qui ont un Y ce que fait déja ma macro. Je voudrais en plus quelle sélectionne aussi les cellules dans la colonne AK qui ont quelques choses d'écrit. Pour la troisième condition que j'ai mis, je ne crois pas être correct. Car je crois avoir inscrit sélectionne les cellules vides au lieu de s'il y a quelque chose d'inscrit.

Pour la deuxième macro j'ai eu de l'aide. Je suis novice en macro.

Dans le deux cas je dois sélectionner les AVR-16, les Y et les cellules non vide dans une autre colonne.
Je te remercie de ton aide, c'est précieux pour moi.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023
25 mai 2016 à 15:31
Bonjour,

'macro1
If Range("A" & N) <> "" And Range("I" & N) = "AVR-16" And Range("AH" & N) = "Y" And Range("AK" & N) <> "" Then

'macro 2
Const coNV = "AR"

If .Range(coN & li) = N And .Range(coY & li) = Y And .Range(coNV & li) <> "" Then
0
chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
25 mai 2016 à 15:48
Bon je m'excuse mais cela ne fonctionne pas

Probablement parce que ma macro n'est pas correct au départ

je m'explique

exemple

Dans ma colonne I j'ai un AVR-16 dans ma colonne AG j'ai un Y et dans ma colonne AJ si j'ai quelque chose d'inscrit si les trois conditions supprime moi toute la ligne.

Il arrive que dans la colonne AJ j'ai rien d'inscrit alors elle n'efface pas les lignes suivantes

MAIS cela ne fonctionne pas avec ce que j'ai inscrit dans ma macro
la voici au complet

Sub Convertir_factures()
range("A1").Select
Sheets("factures").Select
Sheets("factures").Copy Before:=Sheets(1)
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Rows("1:1").Select
Selection.AutoFilter
range("A1:AM1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Dim Dernligne As Long
Dernligne = ActiveSheet.range("A" & Rows.Count).End(xlUp).Row
For N = Dernligne To 1 Step -1
If range("A" & N) <> "" And range("I" & N) = "AVR-16" And range("AH" & N) = "Y" And range("AK" & N) <> "" Then
Rows(N & ":" & N).Select
Selection.Delete Shift:=xlUp
End If
Next N
end sub

merci beaucoup de ton aide
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023
Modifié par f894009 le 25/05/2016 à 16:04
Re,

Bon je m'excuse mais cela ne fonctionne pas Qu'est-ce a dire, que ce passe-t-il ou pas ????

D'apres votre code, les lignes a supprimer sont dans la copie de facture

la partie code suppression, je viens de la tester et ca marche
0
chantalan Messages postés 20 Date d'inscription jeudi 21 janvier 2016 Statut Membre Dernière intervention 21 septembre 2023 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
Modifié par chantalan le 25/05/2016 à 20:36
ok je m'excuse, je m'explique

Dans la colonne AK il y a des cellules vides et il ne se suivre pas quelque fois il y a des dates d'inscrit et d'autre fois non. et ce sur ma copie

Alors il me supprime pas toute les lignes qui remplissent les trois conditions.

Merci

Un exemple

A I AH AK
1 AVR-16 Y 2016-04-05
2 AVR-16 Y
3 MAI-16 2016-05-04
4 JUIN-16 Y 2016-05-07
6 AVR-16 Y
7 AVR-16 Y 2016-04-06

La macro devrait enlever la ligne 1 et 7 car se sont elle qui remplissent les trois conditions. J'ai plusieurs lignes a mon fichier.

Je crois que c'est la première partie de mon code qui ne fonctionne pas

Dim Dernligne As Long
Dernligne = ActiveSheet.range("A" & Rows.Count).End(xlUp).Row
For N = Dernligne To 1 Step -1



Je voudrais que ma macro fasse une copie de ma feuille
Quel sélectionne les lignes qui remplissent les trois conditions dans mon tableau.
et ce jusqu'en bas de mon tableau peut importe le nombre de ligne.

Merci beaucoup pour ton aide
0