Macro excel copier coller conditionnel
Résolu/Fermé
comefs
Messages postés
4
Date d'inscription
vendredi 2 janvier 2015
Statut
Membre
Dernière intervention
11 mai 2015
-
2 janv. 2015 à 15:42
comefs Messages postés 4 Date d'inscription vendredi 2 janvier 2015 Statut Membre Dernière intervention 11 mai 2015 - 2 janv. 2015 à 21:25
comefs Messages postés 4 Date d'inscription vendredi 2 janvier 2015 Statut Membre Dernière intervention 11 mai 2015 - 2 janv. 2015 à 21:25
3 réponses
ccm81
Messages postés
10543
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 mars 2023
2 336
2 janv. 2015 à 18:26
2 janv. 2015 à 18:26
Bonjour
Peux tu mettre un bout de ton fichier au format excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt
Peux tu mettre un bout de ton fichier au format excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt
ccm81
Messages postés
10543
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 mars 2023
2 336
2 janv. 2015 à 19:06
2 janv. 2015 à 19:06
A tester
https://www.cjoint.com/?3ActpgUMdZS
Cdlmnt
https://www.cjoint.com/?3ActpgUMdZS
Cdlmnt
comefs
Messages postés
4
Date d'inscription
vendredi 2 janvier 2015
Statut
Membre
Dernière intervention
11 mai 2015
2 janv. 2015 à 21:25
2 janv. 2015 à 21:25
Merci CCm81, ça marche !!
vive le forum et sa rapidité d'exécution.
vive le forum et sa rapidité d'exécution.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
2 janv. 2015 à 19:16
2 janv. 2015 à 19:16
Bonsoir Comefs, bonsoir le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub Macro1()
Dim S As Object 'déclare l'onglet S (Source)
Dim D As Object 'déclare l'onglet D (Destination)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare l'onglet I (Incrément)
Dim NB As Byte 'déclare la variable NB NomBre)
Dim DEST As Range 'déclare l'onglet DEST (cellule de DESTination)
Set S = Sheets("AMSR_20141124") 'définit l'onglet S
Set D = Sheets("Feuil1") 'définit l'onglet D
D.Cells.Clear 'efface le contenu de l'onglet D
S.Rows(1).Copy D.Range("A1") 'copie la première ligne de l'onglet S dans la cellue A1 de l'onglet D
TC = S.Range("A1").CurrentRegion 'définit le tableau de cellules TC
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les ligne du tabelau de cellules TC (en partant de la seconde)
NB = UBound(Split(TC(I, 4), "|")) 'définit le nombre de fois que le symbole "|" apparaît dans la colonne 4 de TC)
Select Case NB 'agit en fonction du nombre NB
Case 0 'cas où NB vaut 0
Set DEST = D.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
For J = 1 To UBound(TC, 2) 'boucle 2 : sur toutes les colonnes du tableau TC
'copie la cellule ligne I, colonne J de l'onglet source S dans DEST décalée de J-1 colonne à droite
S.Cells(I, J).Copy DEST.Offset(0, J - 1)
Next J 'prochaine colonne de la boucle 2
Case Else 'autre cas
For K = 0 To NB 'boucle 3 : de 0 à NB
Set DEST = D.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
For J = 1 To UBound(TC, 2) 'boucle 4 : sur toutes les colonnes du tableau TC
'copie la cellule ligne I, colonne J de l'onglet source S dans DEST décalée de J-1 colonne à droite
S.Cells(I, J).Copy DEST.Offset(0, J - 1)
'si J vaut 4, récupère la Kième valeur délimitée par ;e symbole "|"
If J = 4 Then DEST.Offset(0, J - 1).Value = Split(S.Cells(I, J), "|")(K)
Next J 'prochaine colonne de la boucle 4
Next K 'prochaine valeur de la boucle 3
End Select 'fin de l'action en fonction du nombre NB
Next I 'prochaine ligne de la boucle 1
End Sub

2 janv. 2015 à 18:32
Tout d'abord merci de t'intéresser à mon problème.
voici le fichier excel : https://www.cjoint.com/c/EAcsMHO8CeL
merci pour ton aide et bonne année 2015 à toi
Cdlt