Bonjour
J'ai un fichier d'extraction qui me donne ceci
Je voudrais obtenir ceci (une ligne par parent)
Avez vous une idée ?
je vous remercie par avance
Jean Luc
Bonjour
J'ai un fichier d'extraction qui me donne ceci
Je voudrais obtenir ceci (une ligne par parent)
Avez vous une idée ?
je vous remercie par avance
Jean Luc
Faire une boucle sur les lignes du fichier source.
Pour chaque ligne, rechercher si le nom est déjà dans le fichier destination avec un Find (ou WorksheetFunction.match ou autre).
Si ce n'est pas le cas, ajouter une ligne en copiant la ligne source après la dernière ligne du fichier destination.
Si le nom existe, on utilise un End(xlToRight) pour connaitre la dernière colonne utilisée et on colle juste à droite les colonnes B et C de la source.
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Bonjour à tous
Ou utiliser PowerQuery intégré à partir de 2016 ou en add on sur 2010 et 2013
Chris
PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
----------------------------------------------------------------------------------------------
En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...
Merci pour vos réponses
N'étant pas un expert en vba je vais me tourner vers power query . je l'ai installé ce matin , je ne sais pas encore par quel bout le prendre mais avec un peu de patience -et peut etre quelques conseils-je devrais y arriver
Bonne journée
Jean-Luc
Bonjour,
Le message de Menhir explique bien ce qu'il faut faire, si besoin, voici un bout de code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 Option Explicit Const f1 As String = "Feuil1" ' source Const f2 As String = "Feuil2" ' destination Const f3 As String = "Feuil3" ' comptage Sub moulinette() ' Dim L As Long, Ok As Long Dim L1 As Long ' Ligne : source Dim L2 As Long ' Ligne : destination ' Sheets(f2).Cells.ClearContents ' iNiT destination Sheets(f3).Cells.ClearContents ' iNiT comptage ' Sheets(f2).Cells(1, 1).Value = "Matricule" Sheets(f2).Cells(1, 2).Value = "Nom Enfant" Sheets(f2).Cells(1, 3).Value = "Age Enfant" ' ' ligne 1 : en-tête ' L1 = 2: L2 = 2: Call ZzTop(L1, L2) ' ligne 2 : iNiT ' ' --- boucle --- Do L1 = L1 + 1: If (Sheets(f1).Cells(L1, 1).Value = "") Then Exit Do ' Ok = 0 ' For L = 2 To L2 If (Sheets(f1).Cells(L1, 1).Value = Sheets(f2).Cells(L, 1).Value) Then Ok = L: Exit For Next L ' If (Ok = 0) Then ' L2 = L2 + 1 ' Call ZzTop(L1, L2) ' Else ' Call ZzTop(L1, Ok) ' End If ' Loop ' MsgBox " fin... " ' End Sub Sub ZzTop(L1 As Long, L2 As Long) ' Dim nb As Integer ' nb = Sheets(f3).Cells(L2, 1).Value + 1: Sheets(f3).Cells(L2, 1).Value = nb ' If (nb = 1) Then Sheets(f2).Cells(L2, 1).Value = Sheets(f1).Cells(L1, 1).Value ' Matricule Parent ' Sheets(f2).Cells(1, (nb * 2) + 0).Value = "Nom Enfant " & nb Sheets(f2).Cells(1, (nb * 2) + 1).Value = "Age Enfant " & nb ' Sheets(f2).Cells(L2, (nb * 2) + 0).Value = Sheets(f1).Cells(L1, 2).Value ' Nom Enfant Sheets(f2).Cells(L2, (nb * 2) + 1).Value = Sheets(f1).Cells(L1, 3).Value ' Age Enfant ' End Sub
J'ai pas compris toute la subtilité de ton" bout de code" mais ça marche Nickel
Je vais m'y pencher j'aime bien comprendre.
Un grand merci pour ton aide
Jean Luc
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager