Reprise de données d'un onglet vers un autre selon condition

Résolu/Fermé
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020 - Modifié par mamined le 4/02/2014 à 14:55
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020 - 5 févr. 2014 à 09:19
Bonjour le forum,

j'ai construit une macro qui effectue un matching de données provenant de 2 fichiers. A la fin, la macro copie toutes les données dans un autre onglet.

Malheureusement il me reste une étape que je n'arrive pas à faire. Depuis l'onglet "Complet", je souhaite copier dans l'onglet "Final" dès la cellule A2 toutes les valeurs des colonnes de "A" à "I", si dans l'onglet "Complet", la cellule "i" n'est pas vide.

J'arrive à intégrer dans la macro une formule si cellule "i"X non vide mais le problème c'est que cela me ramène la valeur non pas depuis la cellule A2, mais en fonction de la ligne de position de l'onglet source.

Y a t'il un moyen de ramener les infos dès la cellule A2 sans avoir des lignes vides entre les valeurs?

Ceci sachant que le nombre de ligne de l'onglet "Complet" varie d'un mois à un autre.

Un grand merci par avance car je plenche là-dessus depuis des jours sans trouver la solution
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 févr. 2014 à 16:56
Bonjour,

une facon de faire

Sub copie_Final()
Dim plage As Range, cel As Range, derlig, derlig1

'fige ecran
Application.ScreenUpdating = False
With Worksheets("Complet")
'derniere cellule non vide colonne A
derlig = .Range("A" & Rows.Count).End(xlUp).Row
'mise en memoire plage donnees
Set plage = .Range("I2:I" & derlig)
'boucle test cellule Ix non vide
For Each cel In plage
If cel <> "" Then
'premiere cellule vide colonne A
derlig1 = Worksheets("Final").Range("A" & Rows.Count).End(xlUp).Row + 1
'copy donnees
.Range("A" & cel.Row & ":I" & cel.Row).Copy Worksheets("Final").Range("A" & derlig1 & ":I" & derlig1)
End If
Next cel
End With
Application.ScreenUpdating = True
End Sub
0
mamined Messages postés 36 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 28 juillet 2020
5 févr. 2014 à 09:19
Bonjour tout le monde,

merci pour la réponse. Entre temps j'ai eu un coup de main et ai pu faire ce que je souhaitais

si ça peut intéresser, voilà le code qui m'a permis de le faire :

With Sheets("Complet")
For i = 2 To .Range("a2").End(xlDown).Row
If .Cells(i, 9) <> "" Then
.Range("a" & i & ":I" & i).Copy Sheets("Final").Range("a80000").End(xlUp).Offset(1, 0)
End If

Next
End With
0