past special....transpose....

daxhilo

XLDnaute Nouveau
bonjour a tous,
c'est mon premier message dans cet forum,
je suis un utilisateur débutant mais j'ai un problème a résoudre

en effet j'ai un fichier excel avec une centaine de ligne que je doit convertir....

j'essaie de vous expliquer le problème, et excusez mes fautes de français ... suis étranger.

donc,
comme vous pouvez voir dans le fichier joint ....
j'ai doit d'abord effacer la premier ligne....
ensuite je doit pour chaque ville en colonne A, les donnes de la colonne B dans la colonne C en les transposant;
ensuite je doit effacer les lignes que m'ont servi pour copier les donnes .


(j'espère que en regardant l'exemple soit plus claire...il ya 2 feuille ( les donnes et le reultat que je doit obtenir)


merci a tous
j'espere que soit possible soit par formules soit par MACRO

David
 

Pièces jointes

  • test excel.xls
    38 KB · Affichages: 50
  • test excel.xls
    38 KB · Affichages: 47
  • test excel.xls
    38 KB · Affichages: 51

david84

XLDnaute Barbatruc
Re : past special....transpose....

Re
par formule, je te propose cela. Si tu veux effacer le tableau initial, faire un copier-coller spécial valeurs des données de l'onglet résultat avant de supprimer le tableau.
Sinon c'est bien sûr jouable (et même plus adapté) par macro si tu veux effacer automatiquement l'onglet Origin mais comme je ne suis pas sûr de te comprendre...
A+
 

Pièces jointes

  • test excel_daxhilo.xls
    26 KB · Affichages: 40

daxhilo

XLDnaute Nouveau
Re : past special....transpose....

desole , j'etais pas clair.
je vais recommencer:
chaque semaine je reçoit une fichier avec une premier ligne ( que je devrais ensuite effacer), et 2 colonne de donnes:
dans la première colonne il y aura des "ville" en ordre alphabétique, et dans la deuxieme colonne des "dates".

donc:

1) effacer la première ligne.
2) copier les dates de la colonne B pour chaque ville et le coller avec transposition a partir de la colonne C .
3) effacer les lignes de trop( je doit garder uniquement une ligne par ville)
4) ensuite je doit effacer la colonne B
5) renommer le feuille

merciiiiii
 

david84

XLDnaute Barbatruc
Re : past special....transpose....

Re
code à tester :
Code:
Sub test()
Dim mondico As Object, a, b(), c, d, PremAddress, i&, j&
Set mondico = CreateObject("Scripting.Dictionary")
a = Range("a2", Range("A" & Rows.Count).End(xlUp)).Value
For Each c In a
  mondico(c) = mondico(c)
Next c
[c1].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
With Range("a1", Range("A" & Rows.Count).End(xlUp))
For i = 1 To mondico.Count
j = 1
    Set d = .Find(Cells(i, 3), LookIn:=xlValues)
    If Not d Is Nothing Then
        PremAddress = d.Address
        Do
            ReDim Preserve b(1 To j)
            b(j) = Cells(d.Row, d.Column + 1).Value: j = j + 1
            Set d = .FindNext(d)
        Loop While Not d Is Nothing And d.Address <> PremAddress
        Cells(i, 4).Resize(, UBound(b)) = b
    End If
Next i
End With
ActiveSheet.Columns("A:B").Delete
ActiveSheet.Name = "resultats" 'renommer comme tu veux mais pas avec le même nom que l'autre onglet (sauf si tu le supprimes avant)
End Sub
A+
 

klin89

XLDnaute Accro
Re : past special....transpose....

Bonjour à tous,
Bonjourdavid84, daxhilo

Dans le classeur présenté au post #1, je viens de m'apercevoir qu'un espace s'est inséré dans la cellule A5 après le mot "Rome".

Ce qui a du fausser le résultat pour ce qui ont tenté de trouver une solution et qui s'en n'était pas aperçu.
C'était mon cas, ayant planché dessus hier, j'ai abandonné et jeté mon travail :confused:
Comme quoi une bonne nuit de sommeil ....:)

Klin89
 
Dernière édition:

daxhilo

XLDnaute Nouveau
Re : past special....transpose....

salut a tous, encore merci pour votre implication...

pour david84 :
j'ai copie ton code dans le "visual basic editor", mais quand je cherche de lancer la macro j'ai un message d'erreur que m'informe que j'ai pas la licence pour effectuer de macro in design environnent !!!

c'est normal ou je me suis trompe en qqchose???
 

daxhilo

XLDnaute Nouveau
Re : past special....transpose....

de plus j'ai excel 97 au travail.... supporte-il les macro visual basic?

ci joint le fichier de test avec ton code dedans.

il marche chez toi?
 

Pièces jointes

  • test excel.xlsx
    31.9 KB · Affichages: 48
  • test excel.xlsx
    31.9 KB · Affichages: 54
  • test excel.xlsx
    31.9 KB · Affichages: 57
Dernière édition:

klin89

XLDnaute Accro
Re : past special....transpose....

Re à tous,

A appliquer sur la feuille nommée "origin" et virer l'espace parasite en A5
VB:
Sub test1()
Dim c As Range
Application.ScreenUpdating = False
Set c = Range("A2")
Do While c(2, 1) <> ""
  If c(2, 1) = c Then
    'If IsEmpty(Cells(c.Row, 3)) Then
     If Cells(c.Row, 256).End(xlToLeft)(1, 2).Column = 3 Then
      c.Offset(0, 1).Copy Cells(c.Row, 256).End(xlToLeft)(1, 2)
    End If
    c.Offset(1, 1).Copy Cells(c.Row, 256).End(xlToLeft)(1, 2)
    c(2, 1).EntireRow.Delete
  Else
    Set c = c(2, 1)
    c.Offset(0, 1).Copy Cells(c.Row, 256).End(xlToLeft)(1, 2)
  End If
Loop
Rows(1).Delete
Application.ScreenUpdating = True
End Sub

Sur un modèle emprunté à Softmama :)

Klin89
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji