Copier données d'une cellule jusqu'à la prochaine non vide et recommencer

27 réponses
Avatar
suze32
Bonjour,

Je traite des donn=E9es issus d'un logiciel comptable en l'exportant.

Dans ma colonne A, j'ai une donn=E9es dans la cellule "A3", "A54", "A85", "=
A87"...
(entre toutes ces cellules, les cellules sont vides)

Je souhaiterais pouvoir copier les donn=E9es de la cellule A3 jusqu'=E0 A53=
, celle de A54 jusqu'=E0 A84 etc... jusqu'=E0 la fin de la feuille.

A chaque extraction, les cellules remplies ne seront pas les m=EAmes.

Merci pour votre aide
Bonne journ=E9e,

10 réponses

1 2 3
Avatar
suze32
J'ai oublié de préciser que ma demande concernait une macro.
Merci d'avance,




Le mardi 17 décembre 2013 14:59:52 UTC+1, suze32 a écrit :
Bonjour,



Je traite des données issus d'un logiciel comptable en l'exportant.



Dans ma colonne A, j'ai une données dans la cellule "A3", "A54", "A85", "A87"...

(entre toutes ces cellules, les cellules sont vides)



Je souhaiterais pouvoir copier les données de la cellule A3 jusqu'à A 53, celle de A54 jusqu'à A84 etc... jusqu'à la fin de la feuille.



A chaque extraction, les cellules remplies ne seront pas les mêmes.



Merci pour votre aide

Bonne journée,
Avatar
MichD
Bonjour,


En supposant que j'ai bien compris ta question,
essaie comme ceci. Prends soin d'adapter le nom
de l'onglet de la feuille de la procédure.

'-------------------------------------
Sub test1()
Dim T As Variant
Application.EnableEvents = False
With Worksheets("Feuil1")
T = Split(.Range("A3"), ",")
.Range("A3").Resize(UBound(T)) = Application.Transpose(T)
T = Split(.Range("A54"), ",")
.Range("A54").Resize(UBound(T)) = Application.Transpose(T)
End With
Application.EnableEvents = True
End Sub
'-------------------------------------
Avatar
suze32
Merci pour beaucoup pour ton aide, mais le code ne marche pas et je ne pens e pas que cela convienne.

Pour être plus explicite, Dans la cellule "A3" est inscrit "NO", dans la cellule "A54" est inscrit "ES", dans la cellule "A85" est inscrit "FR"... C es codes correspondent à des codes pays.

Je souhaiterais qu'en cellule A4,A5,A6,A7... jusqu'à A53 soit copier dans chaque cellule "NO". Puis que "ES" soit étendu de la cellule A55 à A84 et ainsi de suite pour tous les codes de pays inscrit aléatoirement.

Un fichier vous intéresse peut-être comme modèle?

Merci pour votre aide,
Suzy
Avatar
MichD
'------------------------------------------------
Sub test1()
Dim T As Variant
Application.EnableEvents = False
With Worksheets("Feuil1")
.Range("A3:A53") = "NO"
.Range("A54") = "ES"
End With
Application.EnableEvents = True
End Sub
'------------------------------------------------
Avatar
MichD
Erreur corrigée.

'------------------------------------------------
Sub test1()
Dim T As Variant
Application.EnableEvents = False
With Worksheets("Feuil1")
.Range("A3:A53") = "NO"
.Range("A55:A84") = "ES"
End With
Application.EnableEvents = True
End Sub
'------------------------------------------------
Avatar
suze32
Ce n'est pas encore ça, mais on va y arriver!
Désolé si mes explications ne sont pas très clair, sans fichier c'est difficile...

Les codes sociétés seront toujours différents, exemple : à la proch aine extraction j'aurais NO à la place de ES. A la prochaine extraction, les cellules renseignées ne seront pas les mêmes, exemple, il y a aura un code société en A5, A10, A50...

Je souhaite une macro qui fonctionne à chaque extraction et qui copie le code sociétés (soit les données de la première cellule remplie jusq u'à la dernière cellule vide, puis faire pareil pour la prochaine donn ée).

Merci pour votre aide,
Suzy
Avatar
MichD
Tu peux publier un fichier exemple en utilisant le site Cjoint.com
Tu obtiendras une adresse que tu nous transmets ici.

Dans le fichier, tu peux insérer les explications que tu juges
nécessaires...
Avatar
suze32
Voici le lien,


http://cjoint.com/?0Lrq5sqrtVS
Avatar
MichD
Assure-toi que le nom de la feuille est bon dans la procédure.

'------------------------------------------------
Sub test()
With Worksheets("Extraction")
With .Range("A2:A" &
.Range("B6556").End(xlUp).Row).SpecialCells(xlCellTypeBlanks)
.Formula = "=A" & .Item(1).Row - 1
End With
With .Range("A2:A" & .Range("B6556").End(xlUp).Row)
T = .Value
.Value = T
End With
With .Range("B2:B" & .Range("B6556").End(xlUp).Row)
Set Trouve = .Find(What:="", LookAt:=xlValue)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
If Trouve.Offset(, -1) <> Trouve.Offset(1, -1) Then
Trouve.Offset(, -1) = ""
End If
Set Trouve = .FindNext(Trouve)
Loop Until Adr = Trouve.Address
End If
End With
End With
End Sub
'------------------------------------------------
Avatar
Jacky
Bonsoir,

Tester ceci
'--------------
Sub jj()
Dim i As Long
With Sheets("Extraction")
For i = 3 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(i - 1, 1) <> "" Then
If .Cells(i, 2) <> "" Then .Cells(i, 1).Value = Cells(i - 1, 1).Value
End If
Next
End With
End Sub
'----------------

--
Salutations
JJ


"suze32" a écrit dans le message de news:

Bonjour,

Je traite des données issus d'un logiciel comptable en l'exportant.

Dans ma colonne A, j'ai une données dans la cellule "A3", "A54", "A85", "A87"...
(entre toutes ces cellules, les cellules sont vides)

Je souhaiterais pouvoir copier les données de la cellule A3 jusqu'à A53, celle de A54 jusqu'à A84 etc...
jusqu'à la fin de la feuille.

A chaque extraction, les cellules remplies ne seront pas les mêmes.

Merci pour votre aide
Bonne journée,
1 2 3