Macro Excel swap de colonnes sous conditions
Stevenp
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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 !
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 !
2 réponses
-
bonjour,
ok, un peu de patience... -
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