Copie de données d'un onglet vers un autre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

smaelVB

XLDnaute Nouveau
bonjour à tous,

novice en VBA, je m'arrache les cheveux depuis ce weeke end pour créer une macro qui récupère certaines données dans un onglet (PilotageCouleur) vers un autre onglet (Smael).

J'ai un tableau ayant un onglet Pilotage qui contient des cellules vides et des cellules avec des dates (exemple : DC=DEC09).

J'arrive dans un premier temps à identifier les cellules vides et les cellules pleines en changeant le fond de couleur de la cellule.

Cependant, la deuxième étape serait de copier pour toutes les cellules non vides, l'information se trouvant dans les colonnes B et C, ainsi que les informations se trouvant dans les lignes 1 et 2, puis il faudrait les coller dans une autre feuille (Smael) dans 5 colonnes séparés (Date comptable,Jour,Date,Frequence,Type). J'espère être assez clair...

J'ai mis un exemple dans l'onglet Smael du fichier joint.

Merci beaucoup pour votre aide

Merci pour votre aide !
 

Pièces jointes

Re : Copie de données d'un onglet vers un autre

Bonjour Kjin,

merci beaucoup pour ton aide.

cependant je ne sais pas pourquoi pour la colonne date de l'onglet Smael, les dates ayant un jour entre 01 et 12 sont inversés (le jour est inversé avec le mois). Après à partir du 13eme jour, on a les bonnes dates.

Par exemple au lieu de 04/01/2010 (4 janvier 2010) on a 01/04/2010 (4 février 2010). Or la bonne date est le 4 janvier 2010.

merci beaucoup pour ton retour!!
 
Re : Copie de données d'un onglet vers un autre

bonsoir smael VB, Kjin

avec ce code chez moi cela fonctionne

Sub fonction_analyse()
Dim ad As Date
t = Sheets("PilotageCouleur").Range("B1😛367").Value
k = 2
With Sheets("Smael")
For i = 3 To UBound(t, 1)
For j = 3 To UBound(t, 2)
If t(i, j) <> "" Then
.Cells(k, 1) = t(i, j)
.Cells(k, 2) = t(i, 1)
ad = Format(t(i, 2), "dd-mm-yyyy")
.Cells(k, 3) = ad
.Cells(k, 4) = t(1, j)
.Cells(k, 5) = t(2, j)
k = k + 1
End If
Next
Next
End With

End Sub
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour