Intervertir données

romualdlecordier

XLDnaute Occasionnel
Bonjour

J'ai une macro réalisé grâce à l'aide de ce forum qui fonctionne très bien mais il y a une manip que je n'arrive pas à faire

J'espere que vous pourrez m'aider

Il faut que quand la colonne F est égal à 97 ou 98, les données qui se trouvent en colonne H et I doivent être interverti

Les données de la colonne H se retrouve en I et ceux de I en H

Merci de votre aide

Romuald
 

Pièces jointes

  • Heures.xls
    24 KB · Affichages: 35
  • Heures.xls
    24 KB · Affichages: 46
  • Heures.xls
    24 KB · Affichages: 40

DoubleZero

XLDnaute Barbatruc
Re : Intervertir données

Bonjour, romualdlecordier, le Forum,

Peut-être ainsi :

Code:
Option Explicit
Sub Valeurs_inverser_si()
    Dim i As Long
    Application.ScreenUpdating = False
    Columns("h:i").Insert Shift:=xlToRight
    For i = Range("f" & Rows.Count).End(xlUp).Row To 1 Step -1
        If Range("f" & i) = 97 Or Range("f" & i) = 98 Then
            Range("f" & i).Offset(, 2) = Range("f" & i).Offset(, 5)
            Range("f" & i).Offset(, 3) = Range("f" & i).Offset(, 4)
        End If
    Next
    Columns("h:i").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
    Columns("j:k").Delete Shift:=xlToLeft
    Application.ScreenUpdating = True
End Sub

A bientôt :)
 

Paf

XLDnaute Barbatruc
Re : Intervertir données

Bonjour,

J'ai une macro réalisé grâce à l'aide de ce forum qui fonctionne très bien mais il y a une manip que je n'arrive pas à faire
Aucune macro dans le classeur fourni

J'espere que vous pourrez m'aider

un pseudo algorithme qui peut servir de trame:
Code:
dans une boucle de la première à la dernière ligne de la feuille concernée faire
   si la cellule de ligne:indice de boucle et de colonne F = 97 ou 98 alors
       MaVariable = cellule de ligne:indice de boucle et de colonne H
       cellule de ligne:indice de boucle et de colonne H = cellule de ligne:indice de boucle et de colonne I
       cellule de ligne:indice de boucle et de colonne I = MaVariable
   Fin si
fin boucle

A+ pour des précisions
 

laetitia90

XLDnaute Barbatruc
Re : Intervertir données

bonjour romualdlecordier ,DoubleZero:):):),Paf

on pourrait écrire comme cela egalement

Code:
Sub es()
 Dim t, i As Long, z
 t = Range("f1:i" & Cells(Rows.Count, 6).End(3).Row)
 For i = 1 To UBound(t)
 If t(i, 1) = 97 Or t(i, 1) = 98 Then _
 z = t(i, 3): t(i, 3) = t(i, 4): t(i, 4) = z
 Next i
 Range("f1").Resize(UBound(t, 1), UBound(t, 2)) = t
End Sub
 

Kim75

XLDnaute Occasionnel
Re : Intervertir données

Bonjour romualdlecordier, le forum,

Ci-joint début de solution ...
Code:
Option Explicit
Sub Permuter()
Dim ws As Worksheet, rng As Variant, temp As Variant
Set ws = Sheets("Feuil1")
For Each rng In Range(ws.[F2], ws.[F65000].End(xlUp))
    If rng.Offset = "97" Or rng.Offset = "98" Then
        temp = rng.Offset(0, 2).Value
        rng.Offset(0, 2).Value = rng.Offset(0, 3).Value
        rng.Offset(0, 3).Value = temp
    End If
Next
End Sub
Cordialement, Kim.
 

Pièces jointes

  • Heures-V1.xls
    30.5 KB · Affichages: 26

Discussions similaires

Réponses
6
Affichages
302
Réponses
4
Affichages
155