A voir également:
- Probleme pour extraire des données lors de rupture de champs
- Fuite données maif - Guide
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
4 réponses
Bonjour,
ma maccro fait le boulot mais uniquement sur le premier champ
Le premier champ c'est quoi, une colonne ou ...???
ma maccro fait le boulot mais uniquement sur le premier champ
Le premier champ c'est quoi, une colonne ou ...???
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Comme ta macro copie des lignes complètes, je suppose que c'est la détection de rupture que tu veux changer en tenant compte de plusieurs colonnes.
Si c'est bien cela, tu pourrais modifier la ligne
en, par exemple :
Cela va détecter une rupture si il y a un changement dans la colonne A OU la colonne B.
Si c'est bien cela, tu pourrais modifier la ligne
If Range("A" & i) <> Range("A" & i + 1) Then
en, par exemple :
If (Range("A" & i) <> Range("A" & i + 1)) or (Range("B" & i) <> Range("B" & i + 1)) Then
Cela va détecter une rupture si il y a un changement dans la colonne A OU la colonne B.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Je propose ceci pour toujours garder et copier la première ligne dans chaque nouveau fichier. A toi de l'adapter à ton exemple.
bon boulot!
Option Explicit Sub Ruptures() Dim i, J Dim nom Dim original As Workbook, nouveau As Workbook Set original = ThisWorkbook nom = (ThisWorkbook.Name) i = 2 J = 2 While original.Sheets(1).Range("A" & i) <> "" If Range("A" & i) <> Range("A" & i + 1) Then Rows(J & ":" & i).Select Selection.Copy Set nouveau = Workbooks.Add Rows(2 & ":" & 2).Select ActiveSheet.Paste original.Sheets(1).Rows(1).Copy nouveau.ActiveSheet.Rows(1) ' C'est ici qu'il faut modifier le repertoire d'enregistrement souhaité ActiveWorkbook.SaveAs Filename:="C:\data\temp\" + CStr(Range("A" & 2)) Windows(nom).Activate Sheets(1).Select J = i + 1 End If i = i + 1 Wend End Sub
bon boulot!