Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

past special....transpose....

  • Initiateur de la discussion Initiateur de la discussion daxhilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

daxhilo

Guest
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

Re : past special....transpose....

bonjour a tout les 2, encore merci mille fois,
j'aurai une derniere probleme:

en effet je recois les date dans la colonne B en format 02/04/2011 et je doit l'obtenir en format : 02APR2011

je crois que je devrais utiliser la formule : ;[$-309]jjmmmaaa
mais je sais pas comment l'integrer dans votre code visual basic ni comme creer un bouton avec cet macro dedans 🙁

j'espere vous pourriez m'aider

bonne journee
 
Dernière modification par un modérateur:
Re : past special....transpose....

Re daxhilo,
Rien à voir avec la question initiale :

Un peu de bricolage 🙄
En supposant que tes dates soient bien sous cette forme dans ta colonne B :
02/01/2011
03/02/2011
07/03/2011
20/04/2011
14/05/2011
etc....

Dans un module standard :
VB:
Option Base 1
Sub Convertir_Les_Dates()
Dim c As Range, n As Byte
liste_mois_francais = Array("/01/", "/02/", "/03/", "/04/", "/05/", "/06/", "/07/", "/08/", "/09/", "/10/", "/11/", "/12/")
liste_mois_anglais = Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEPT", "OCT", "NOV", "DEC")
For Each c In Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
  jour = Left(c, 2)
  mois = Mid(c, 3, 4)
  an = Right(c, 4)
  n = 0
  For Each m In liste_mois_francais
    n = n + 1
    If m = mois Then Exit For
  Next m
  mois = liste_mois_anglais(n)
  c.Value = jour & mois & an
Next
End Sub

Tu obtiendras ceci :

02JAN2011
03FEB2011
07MAR2011
20APR2011
14MAY2011

Est-ce le résultat souhaité ?

Klin89
 
Re : past special....transpose....

c'est pas plus simple d'ajouter dans ton code la conversion de toute le feuille avec le format : [$-309]jjmmmaaa

pour avoir une seule macro?
 
Re : past special....transpose....

Re daxhilo,

En rajoutant ceci au code du post #15 :

Code:
Set plage = Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
plage.NumberFormatLocal = "[$-409]jjmmmaaaa;@"
VB:
Sub test2()
Dim c As Range, plage As Range
Application.ScreenUpdating = False
Set c = Range("A2")
Set plage = Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row)
plage.NumberFormatLocal = "[$-409]jjmmmaaaa;@"
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

Edit : pas sûr que cela fonctionne avec une version antérieure à 2003

Klin89
 
Dernière édition:
Re : past special....transpose....

merci merci bcp,
chez moi ça marche sur mac osx lion et microsoft excel 2011

, je testerai demain au boulot avec windows et excel 97

bonne nuit
 
Re : past special....transpose....

Re daxhilo,

Une variante à tester dans le fichier du post #1

VB:
Sub Transposer()
Dim i As Long, j As Long, X As String
With Sheets("origin")
'ici on n'efface pas les données des colonnes A et B
'on transpose à partir de la colonne D
 X = .Range("A2"): .Range("D2") = X
  For i = 2 To .Range("A65536").End(xlUp).Row
    If .Cells(i, 1) = X Then
      j = .Range("D65536").End(xlUp).Row
      If .Cells(j, 256).End(xlToLeft).Column = 4 Then
        .Cells(j, 256).End(xlToLeft).Offset(0, 1).Resize(1, 2) = .Cells(i, 2)
      Else
        .Cells(j, 256).End(xlToLeft).Offset(0, 1) = .Cells(i, 2)
      End If
    Else
      j = .Range("D65536").End(xlUp).Offset(1, 0).Row
      .Cells(j, 4) = .Cells(i, 1)
      If .Cells(j, 256).End(xlToLeft).Column = 4 Then
        .Cells(j, 256).End(xlToLeft).Offset(0, 1).Resize(1, 2) = .Cells(i, 2)
      Else
        .Cells(j, 256).End(xlToLeft).Offset(0, 1) = .Cells(i, 2)
      End If
      X = .Cells(i, 1)
    End If
  Next i
End With
End Sub

Attention à l'espace superflu en A5 🙄

Klin89
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
240
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…