Bonjour à tous.
Je suis sur la réalisation d'une macro depuis longtemps et j'ai un dernier soucis que je n'arrive pas à résoudre.
Le fonctionnement est le suivant :
Au début on cherche des valeurs qu'on affecte aux variable i et j.
Je compare ensuite i et j et 3 cas se présente :
1) i est supérieur ou egal a j, ne rien faire.
2) i est inférieur à j, chercher la valeur de copier la plage qui va de la valeur de i à la fin du tableau, et la coller dans l'onglet de départ à la suite des valeurs déjà présentes.
3) Le problème réside en fait ici, car les deux autres cas fonctionne sans celui-ci.
En fait la variable i ( sa valeur en fait) se trouve dans les deux onglets de mon fichier, je prend la valeur référence ici dans l'onglet 1 et je vais voir si elle se trouve dans le second onglet hors il arrive ( une fois par an!!! mais je suis obligé de prendre en compte ce cas) que la valeur de i ne se trouve pas dans ce second onglet. Dans ce cas précis, je dois prendre toutes les lignes ( la plage entière quoi) de ce second onglet et la coller à la suite des lignes du premier onglet.
J'espère avoir été clair voici mes deux macro la 1ere essayant d'intégrer le 3ème cas et la 2ème qui fonctionne parfaitement avec les deux cas
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Dim k As Range, i, l, j As Integer Sheets("analyse").Select Range("A1").End(xlDown).Select i = ActiveCell.Value Sheets("FI SNCF").Select Range("A1").End(xlDown).Select j = ActiveCell.Value Set k = Range("A1:A" & j).Find(what:=i) If i >= j Then If k Is Nothing Then GoTo Suite Sheets("FI SNCF").Select Range("A1").Select ActiveCell.Offset(0, 1 - ActiveCell.Column).Select Range(Selection, Selection.End(xlDown)).EntireRow.Copy Sheets("analyse").Select Range("A1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste ElseIf i < j Then Sheets("FI SNCF").Select k = Cells.Find(what:=i).Select ActiveCell.Offset(1, 1 - ActiveCell.Column).Select Range(Selection, Selection.End(xlDown)).EntireRow.Copy Sheets("analyse").Select Range("A1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste End If End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Dim i, j As Integer Sheets("analyse").Select Range("A1").End(xlDown).Select i = ActiveCell.Value Sheets("FI SNCF").Select Range("A1").End(xlDown).Select j = ActiveCell.Value If i >= j Then End If If i < j Then Sheets("FI SNCF").Select Cells.Find(what:=i, MatchCase:=False).Select ActiveCell.Offset(1, 1 - ActiveCell.Column).Select Range(Selection, Selection.End(xlDown)).EntireRow.Copy Sheets("analyse").Select Range("A1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste End If End Sub
Partager