Macro Excel swap de colonnes sous conditions

Stevenp -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je dois créer une macro excel (mais étant débutant dans le domaine) permettant de swaper 2 colonnes dans une liste de données.

En gros j'ai une liste (de longueur variable) contenant 11 Colonnes.

Je dois tester si
- La valeur (texte) de la colonne 4 est égal à "X" ou "Y"
- et si la colonne 11 n'est pas vide.

=> Dans ce cas, inverser la colonne 4 et 11 ; sinon rien faire.

Mais je suis bloqué..

Merci d'avance de votre aide !

A voir également:

2 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
bonjour,

ok, un peu de patience...
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Option Explicit
Const Deb As Byte = 3 'ligne de départ

Sub intervertir_D_K_si()
Dim Fin As Integer, cptr As Integer
Dim T_4, T_11
Dim vers_11
'initialisations
With Application
     .ScreenUpdating = False
     Fin = Columns(4).Find("*", , , , , xlPrevious).Row
     T_4 = .Transpose(Range(Cells(Deb, 4), Cells(Fin, 4)).Value)
     T_11 = .Transpose(Range(Cells(Deb, 11), Cells(Fin, 11)).Value)
End With

'swap
For cptr = 1 To UBound(T_4)
     If Not IsEmpty(T_11(cptr)) And (T_4(cptr) = "X" Or T_4(cptr) = "Y") Then
          vers_11 = T_4(cptr)
          T_4(cptr) = T_11(cptr)
          T_11(cptr) = vers_11
     End If
Next

'tableaux aménagés
Cells(Deb, 4).Resize(UBound(T_4), 1) = Application.Transpose(T_4)
Cells(Deb, 11).Resize(UBound(T_11), 1) = Application.Transpose(T_11)


End Sub

0