Aide pour une macro Excel 2007
Résolu
chevalux1
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
coco_rico Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
coco_rico Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Pouvez vous m'aider à réaliser une macro SVP ?
La macro ne me parait pas très compliquée mais je n'y connais rien du tout!
Il s'agit d'afficher uniquement (peut être dans une autre feuille du classeur) les lignes qui répondent aux conditions suivantes:
- La ligne doit afficher "P" dans la colonne R
- La ligne doit avoir une date > 1 ans dans la colonne U
- Si ces deux conditions sont réunies il faut vérifier que dans la colonne X, la ligne soit vide ou que la date inscrite si elle n'est pas vide, soit supérieure à 1 an.
Merci d'avance pour votre aide.
Pouvez vous m'aider à réaliser une macro SVP ?
La macro ne me parait pas très compliquée mais je n'y connais rien du tout!
Il s'agit d'afficher uniquement (peut être dans une autre feuille du classeur) les lignes qui répondent aux conditions suivantes:
- La ligne doit afficher "P" dans la colonne R
- La ligne doit avoir une date > 1 ans dans la colonne U
- Si ces deux conditions sont réunies il faut vérifier que dans la colonne X, la ligne soit vide ou que la date inscrite si elle n'est pas vide, soit supérieure à 1 an.
Merci d'avance pour votre aide.
A voir également:
- Aide pour une macro Excel 2007
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
28 réponses
essaie le code ci-dessous, je ne pense pas que ce soit un format de date, sais tu la ligne où ça ne marche pas?
i = 2
k = 2
While i < 6000
If Cells(i, 18) = "P" Then
If Cells(i, 21) <> "" Then
If DateDiff("yyyy", Cells(i, 21), Date) > 1 Then
If (Cells(i, 24) = "" Or DateDiff("yyyy", Cells(i, 24), Date) > 1) Then
For j = 1 To 40
Sheets("Ponctuel à relancer").Cells(k, j) = Sheets("SAV").Cells(i, j)
Next j
k = k + 1
End If
End If
End If
End If
i = i + 1
Wend
i = 2
k = 2
While i < 6000
If Cells(i, 18) = "P" Then
If Cells(i, 21) <> "" Then
If DateDiff("yyyy", Cells(i, 21), Date) > 1 Then
If (Cells(i, 24) = "" Or DateDiff("yyyy", Cells(i, 24), Date) > 1) Then
For j = 1 To 40
Sheets("Ponctuel à relancer").Cells(k, j) = Sheets("SAV").Cells(i, j)
Next j
k = k + 1
End If
End If
End If
End If
i = i + 1
Wend
Non je ne sais pas la ligne ou ça ne marche pas, comment savoir?
Avec ce dernier code rien ne se passe.
Avec ce dernier code rien ne se passe.
envoie moi une partie de ton fichier, je verrai là où ça cloche parce chez moi ça marche.
quoc.bach@alico.com
quoc.bach@alico.com
Je crois que j'aicompris l'erreur!
ça provient du >1 concernant la date.
Il me reporterait que les lignes avec les dates en 2007.
Or moi mes dates pour le moment sont encore en 2008 mais la différence avec aujourd'hui est supérieur à 365 jours.
Ce sont ces lignes que je veux recopier. J'ai mis >= 1 et il me remonte bien les lignes ou il ya 2008.
Peut est-ce sur les jours ou les mois qu'il faut poser les conditions ?
ça provient du >1 concernant la date.
Il me reporterait que les lignes avec les dates en 2007.
Or moi mes dates pour le moment sont encore en 2008 mais la différence avec aujourd'hui est supérieur à 365 jours.
Ce sont ces lignes que je veux recopier. J'ai mis >= 1 et il me remonte bien les lignes ou il ya 2008.
Peut est-ce sur les jours ou les mois qu'il faut poser les conditions ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non, >= c'est bon, ce sera toutes les dates il y a au moins 1 an, je pense que c'est ça que tu veux?
effectivement, je viens de tester. alors dans la fonction datediff, remplace "yyyy" par "d", et 1 par 365 au niveau du test.