Reprise de données d'un onglet vers un autre selon condition [Résolu/Fermé]

Messages postés
29
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
20 décembre 2018
-
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
Afficher la suite 

2 réponses

Messages postés
14890
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 décembre 2019
1195
0
Merci
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
Messages postés
29
Date d'inscription
mardi 4 février 2014
Statut
Membre
Dernière intervention
20 décembre 2018
0
Merci
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