[VBA] Selectionner une cellule sous condition (date)

sly.d

XLDnaute Nouveau
Bonjour à tous,

Etant la première fois que j'écris sur ce forum, je m'excuse si je m'y prend mal.

Je débute en VBA, et je n'ai trouvé nul part ce que je cherchais, c'est pour ça que je viens vous demandez votre aide.

J'ai un fichier ou j'ai un onglet nom, et un onglet synthèse.
J'aimerais rechercher le nom d'une personne qui se situe dans mon onglet nom, dans l'onglet synthèse.
Dans cet onglet synhtèse j'ai le noms de plusieurs personnes et une date d'effet.
Certaines personnes n'apparaissent qu'une fois, d'autre plusieur fois et j'aimerais selectionner la personne
dont la date d'effet est la plus récente.

J'ai commencer un code (pour selectionner les nom des personnes d'onglet à onglet) mais cela ne fonctionne pas
et je n'ai vraiment aucune idée de comment selectionner par rapport à la date.

(Je met un fichier pour que cela soit plus clair je l'espère)

Sub test()


Dim i As String
Dim a As Integer

Dim x As Integer
i = 1
a = 1


Do
i = i + 1

Sheets("Nom").Activate
Sheets("Nom").Cells(i, 1).Select
Selection.Copy
Sheets("Synthèse").Activate

x = Cells.Find(What = Sheets("Nom").Cells(i, 1), After:=ActiveCell, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Select

Selection.EntireRow.Copy


Sheets("ce que je veux").Activate
Sheets("ce que je veux").Cells(a, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False

a = a + 1

Selection.Offset(1, 0).Select
Loop

End Sub


Merci d'avance pour votre aide.
 

Pièces jointes

  • forum.xls
    24 KB · Affichages: 111
  • forum.xls
    24 KB · Affichages: 118
  • forum.xls
    24 KB · Affichages: 119

ayaflo

XLDnaute Junior
Re : [VBA] Selectionner une cellule sous condition (date)

Bonjour,

Réalise un tri décroissant sur tes dates d'effets et ensuite fait un recherchev (avec comme dernier membre "faux") de ton client, la date d'effet qu'il t'extraira sera la date la plus récente.

Flo
 

ayaflo

XLDnaute Junior
Re : [VBA] Selectionner une cellule sous condition (date)

Sly.d,

Pour la recherchev, il faut que le nom de tes clients soit la première colonne de ton tableau dans lesquelles tu recherches les valeurs, donc il faut que tu inverses les dates avec les noms clients pour avoir l'ordre suivant :Colonne A - Client; colonne B - Date d'effet.

Ayaflo
 

sly.d

XLDnaute Nouveau
Re : [VBA] Selectionner une cellule sous condition (date)

Ayaflo,

Le problème est que mon onglet synthèse fait plus de 4000 ligne et contient plusieurs colonnes,
dans le fichier je n'ai mis que le nom et la date car la date est ce qui me pose problème.
De même pour mon fichier nom, il y en a en réalité beaucoup plus.

Sly.D
 

sly.d

XLDnaute Nouveau
Re : [VBA] Selectionner une cellule sous condition (date)

J'ai changer mon code qui fonctionne maintenant, et grace au tri décroissant j'ai la date la plus récente. (MERCI :) )

Je vous montre mon code car mon souci c'est qu'il continu, il ne s'arrete pas à la derniere ligne de mon onglet nom. :

Sub test()


Dim i As String
Dim a As Integer

Dim x As Integer
i = 1
a = 1


Do
i = i + 1

Sheets("Nom").Activate
Sheets("Nom").Cells(i, 1).Select
Selection.Copy
Sheets("Synthèse").Activate

Sheets("Synthèse").Cells(2, 4).Select

x = Sheets("Synthèse").Cells.Find(What:=Sheets("nom").Cells(i, 3), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.SelectSelection.EntireRow.Copy


Sheets("ce que je veux").Activate
Sheets("ce que je veux").Cells(a, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False

a = a + 1

Selection.Offset(1, 0).Select
Loop

End Sub
 

sly.d

XLDnaute Nouveau
Re : [VBA] Selectionner une cellule sous condition (date)

Ayaflo,

En faite j'ai vraiment simplifier vraiment :s, car j'utilise deux fichiers avec plusieurs onglets, je suis en stage et les fichiers sont confidentiel :s.


Wuted, merci de ta remarque pertinante, mais comme je l'ai dit je suis débutante et pour l'instant ce qui m'aide ce sont les forums comme celui-ci qui me permettent de faire mes macros.
Donc je m'excuse du fait que je sois débutante si tu veux, mais le plus simple serait en plus de rajouter comment mettre une condition d'arret à mon code.

Merci
 

ayaflo

XLDnaute Junior
Re : [VBA] Selectionner une cellule sous condition (date)

Pour la condition d'arret tente de faire un test sur la valeur de la cellule en t'arrètant quand il n'y a plus rien dans la cellule
avec while activecell.value<> "" Do
Cette commande effectura le code tant que la cellule active contient une valeur. ensuite à toi de faire évoluer la cellule active.

ou alors un test sur la derniere ligne de ton tableau
avec
lastligne = [A65536].end(xlup).row 'attention ne marche que sur 2003 et 2010, pour 2007 mettre le nombre de ligne max
while i<= lastligne
Cette commande test si le nombre de ligne parcouru est inférieur au nombre de ligne total du tableau

Je suis aussi en stage et au début j'ai un peu galéré mais tkt le VBA ça vient vite et tu verras au final on écrit toujours les mêmes commandes.

Bonne chance.

Ayaflo
 

WUTED

XLDnaute Occasionnel
Re : [VBA] Selectionner une cellule sous condition (date)

Ayaflo,

En faite j'ai vraiment simplifier vraiment :s, car j'utilise deux fichiers avec plusieurs onglets, je suis en stage et les fichiers sont confidentiel :s.


Wuted, merci de ta remarque pertinante, mais comme je l'ai dit je suis débutante et pour l'instant ce qui m'aide ce sont les forums comme celui-ci qui me permettent de faire mes macros.
Donc je m'excuse du fait que je sois débutante si tu veux, mais le plus simple serait en plus de rajouter comment mettre une condition d'arret à mon code.

Merci

Il n'était sûrement pas question que tu t'excuses d'être débutante, seulement cette indication suffisait normalement pour toi, il y a des nombreuses ressources sur la toile qui te permettent de comprendre d'une façon détaillée le fonctionnement d'un Do..Loop, c'est une démarche plus intéressante et constructive pour toi que simplement te balancer la réponse.

Bonne aprés-midi.
 

sly.d

XLDnaute Nouveau
Re : [VBA] Selectionner une cellule sous condition (date)

Merci à vous deux.

J'ai un autre soucis, je viens de me rendre compte d'un paramètre que je pensais inutile.
J'ai donc modifié mon fichier.

Une personne a un contrat, une date d'effet, une prime annuel et un droit de remboursement,
si une personne avec le même contrat apparait 2 fois une fois avec une date d'effet et une prime et une autre fois
sans date d'effet et cette fois ci avec un droit de remboursement,
cela veut dire que le contrat à été résilié et que je ne le veux pas le prendre.

Je n'avais pas pris ca en compte.

Merci d'avance.
Sly.d
 

Pièces jointes

  • forum.xls
    35.5 KB · Affichages: 97
  • forum.xls
    35.5 KB · Affichages: 102
  • forum.xls
    35.5 KB · Affichages: 108

WUTED

XLDnaute Occasionnel
Re : [VBA] Selectionner une cellule sous condition (date)

Re,

Si j'ai bien compris ton problème, cette macro devrait "nettoyer" ta synthèse, dans un premier temps, elle regarde si une ligne n'a pas de date d'effet et un remboursement non nul. Si c'est le cas, elle supprime toutes les entrées du tableau avec le même numéro de contrat que la ligne.

VB:
Sub Nettoyage()
    Application.ScrenUpdating = False
    Dim numContrat As String
    For i = 2 To Sheets("Synthèse").Range("A65536").End(xlUp).Row
        If Sheets("Synthèse").Range("B" & i).Value = "" And Sheets("Synthèse").Range("E" & i).Value <> 0 Then
            numContrat = Sheets("Synthèse").Range("A" & i).Value
            For j = 2 To Sheets("Synthèse").Range("A65536").End(xlUp).Row
                If Sheets("Synthèse").Range("A" & j).Value = numContrat Then
                    Sheets("Synthèse").Range("A" & j).EntireRow.Delete
                End If
            Next j
        End If
    Next i
    Application.ScrenUpdating = True
End Sub
 

sly.d

XLDnaute Nouveau
Re : [VBA] Selectionner une cellule sous condition (date)

Ton idée est vraiment top, merci.

Le problème est que j'utilise 2 classeurs différents et ma macro est situé dans l'autre classeur la ou l'onglet synthèse n'existe pas.
Quand je lance ta macro directement dans le bon classeur il n'y a aucun souci, mais de la façon ou je le fais c'est vraiment trop long, je ne comprend pas pourquoi.

Peux tu me dire à quoi sert : Application.ScrenUpdating = True\False


Merci beaucoup
 

WUTED

XLDnaute Occasionnel
Re : [VBA] Selectionner une cellule sous condition (date)

Bonjour,

C'est juste pour que l'affichage de ta feuille se mette à jour d'un coup à la fin de l'opération, et pas au fur et à mesure.
Sans plus d'éléments, je peux pas trop t'aider, tu fais juste une ouverture de fichier, tu lances la macro et ça prend beaucoup plus de temps?
 

Discussions similaires

Réponses
17
Affichages
826

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87