Macro pour inverser les valeurs des lignes et des colonnes

Résolu
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006 - 15 oct. 2006 à 17:29
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006 - 16 oct. 2006 à 17:54
Bonjour à tous,

je cherche une macro capable d'inverser les valeurs de ce qui se trouve dans les lignes et les colonnes.

J'arrive à le faire seulement pour une ligne et une colonne.

Merci d'avance.

13 réponses

Utilisateur anonyme
15 oct. 2006 à 18:38
Ok,ok



Public

Sub
InverserValuers()

  
Const
ColStart
As

Integer
= 1

  
Const
ColEnd
As

Integer
= 7

  
Const
RowStart
As

Integer
= 1

  
Const
RowEnd
As

Integer
= 7

  
Dim
iCol
As

Integer
, iRow
As

Integer

  
For
iCol = ColStart
To
ColEnd

    
For
iRow = RowStart
To
RowEnd

      
If
iRow > iCol
Then

      
Dim
TempValue
As

String
: TempValue = Cells(iRow, iCol).Value

      Cells(iRow, iCol).Value = Cells(iCol, iRow).Value

      Cells(iCol, iRow).Value = TempValue

    
End

If

   
Next
iRow, iCol

End

Sub


Dis moi si ca te va ca.



Kenji
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
15 oct. 2006 à 19:06
Salut, si c'est juste pour transformer les lignes en colonnes, l'assistant Excel de création de macro te donne la solution :

    Sheets("Feuil1").Select
    Range("B2:K11").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

et tu exportes ta Feuil2.
3
Utilisateur anonyme
15 oct. 2006 à 17:45
Salut,

Inverser les valeurs ? C'est à dire ?
La valeurs de droites passe à gauche et celle de gauche à droite ? Pareil pou haut et bas ?



Kenji
0
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
15 oct. 2006 à 17:55
Eh bien en fait pour prendre un exemple, ce qui se trouve dans la case "1B" doit se retrouver dans la case "2A" et vice versa.

Voila le code qui fonctionne mais seulement pour la première ligne et que je souhaiterais étendre à tout le tableau.

"Private Sub CommandButton1_Click()

Dim temp As String
Dim i As Integer


For i = 1 To 230
temp = Cells(1, i)
Cells(1, i) = Cells(i, 1)
Cells(i, 1) = temp
Next

End Sub"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
15 oct. 2006 à 17:56
Eh bien en fait pour prendre un exemple, ce qui se trouve dans la case "1B" doit se retrouver dans la case "2A" et vice versa.
Voila le code qui fonctionne mais seulement pour la première ligne et que je souhaiterais étendre à tout le tableau.

"Private Sub CommandButton1_Click()

Dim temp As String
Dim i As Integer

For i = 1 To 230
temp = Cells(1, i)
Cells(1, i) = Cells(i, 1)
Cells(i, 1) = temp

Next

End Sub"
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
15 oct. 2006 à 18:00
Salut

1B? Késako? B1?

Tu veux transposer ou je n'ai pas compris
Range("A1").Select
 Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
       Selection.Copy
       Range("A1").End(xlDown).Offset(1, 0).Select
      Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, Transpose:=True
Rows("1:1").Select
       Selection.Delete Shift:=xlUp
0
Utilisateur anonyme
15 oct. 2006 à 18:08
Par example.
Ca inverse le tableau B2:K11
B2 va en K11
B3 va en K10
C4 va en J10
...




Public

Sub
InverserValuers()

  
Const
ColStart
As

Integer
= 2

  
Const
ColEnd
As

Integer
= 11

  
Const
RowStart
As

Integer
= 2

  
Const
RowEnd
As

Integer
= 11

  
Dim
iCol
As

Integer
, iRow
As

Integer

  
For
iCol = ColStart
To
ColEnd -
CInt
((ColEnd - ColStart) / 2)

    
For
iRow = RowStart
To
RowEnd -
CInt
((RowEnd - RowStart) / 2)

      
Dim
TargetCol
As

Integer
: TargetCol = (ColEnd + ColStart) - iCol

      
Dim
TargetRow
As

Integer
: TargetRow = (RowEnd + RowStart) - iRow

      
Dim
TempValue
As

String
: TempValue = Cells(iRow, iCol).Value

      Cells(iRow, iCol).Value = Cells(TargetRow, TargetCol).Value

      Cells(TargetRow, TargetCol).Value = TempValue

  
Next
iRow, iCol

End

Sub





Kenji
0
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
15 oct. 2006 à 18:15
Je ne sais pas mais voici deux captures d'écran qui illustreront ce que je veux faire.

Le première quand j'ouvre mon fichier excel et la deuxième après que j'ai appuyé sur le bouton. Mais cela ne fonctionne que pour la première ligne.

http://www.image-dream.com/image.php?image=28fce0ec51efaea49fb8c9d48274e232.jpg&pseudo=anonym

http://www.image-dream.com/image.php?image=bda9192ac08835adaccd07bb0c133b03.jpg&pseudo=anonym
0
Utilisateur anonyme
15 oct. 2006 à 18:17
Petite erreur dans mon code :
Il fallait bien boucler sur toutes les lignes



Public

Sub
InverserValuers()

  
Const
ColStart
As

Integer
= 2

  
Const
ColEnd
As

Integer
= 11

  
Const
RowStart
As

Integer
= 2

  
Const
RowEnd
As

Integer
= 11

  
Dim
iCol
As

Integer
, iRow
As

Integer

  
For
iCol = ColStart
To
ColEnd -
CInt
((ColEnd - ColStart) / 2)

    
For
iRow = RowStart
To
RowEnd

      
Dim
TargetCol
As

Integer
: TargetCol = (ColEnd + ColStart) - iCol

      
Dim
TargetRow
As

Integer
: TargetRow = (RowEnd + RowStart) - iRow

      
Dim
TempValue
As

String
: TempValue = Cells(iRow, iCol).Value

      Cells(iRow, iCol).Value = Cells(TargetRow, TargetCol).Value

      Cells(TargetRow, TargetCol).Value = TempValue

  
Next
iRow, iCol

End

Sub





Kenji
0
Utilisateur anonyme
15 oct. 2006 à 18:18
Ha ok,
Et faut t-il changer les valeurs du contenu ?



Kenji
0
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
15 oct. 2006 à 18:24
Non les valeurs doivent juste changer de place. En fait j'ai un fichier excel qu'il m'est beaucoup plus pratique de construire en lignes mais que je veux exporter ensuite vers un autre logiciel qui n'accepte que les colonnes.
0
cs_ZANUS Messages postés 126 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 février 2007
15 oct. 2006 à 20:34
Bonsoir


Ah, enfin quelqu'un qui pense comme moi. J'avais cru avoir rêvé. Pourquoi, un code aussi compliqué que Dim...?
0
mojopsg Messages postés 6 Date d'inscription mardi 19 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
16 oct. 2006 à 17:54
Merci beaucoup à vous tous vos deux solutions fonctionnent, c'est super.
0