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

[ RESOLU par des foreumeux.Merci ] Transferts des cellules impairs...

  • Initiateur de la discussion Initiateur de la discussion Guido
  • 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 !

Guido

XLDnaute Accro
Bonsoir le Forum

J'aimerais transféré les cellules impair qui se trouvent dans la colonne de gauche,

dans la colonne de droite ,mais avec un code VBA.

Merci

Guido
 

Pièces jointes

Bonsoir Guido,
Code:
Sub Impairs()
Dim P As Range, decal%
Set P = [K2:K19] 'plage à copier, à adapter
decal = 3 'décalage vers la droite, à adapter
With P.Offset(, decal)
  .FormulaR1C1 = "=IF(MOD(RC[" & -decal & "],2),RC[" & -decal & "],"""")"
  .Value = .Value
End With
End Sub

Sub Pairs()
Dim P As Range, decal%
Set P = [K2:K19] 'plage à copier, à adapter
decal = 3 'décalage vers la droite, à adapter
With P.Offset(, decal)
  .FormulaR1C1 = "=IF(NOT(MOD(RC[" & -decal & "],2)),RC[" & -decal & "],"""")"
  .Value = .Value
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

Bonjour, Guido, le Forum,

Comme ceci ?
Code:
Option Explicit
Sub Impair_transférer()
    Dim i As Long
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
    Application.ScreenUpdating = False
    For i = Cells(Rows.Count, "k").End(xlUp).Row To 2 Step -1
        If Range("k" & i) Mod 2 <> 0 Then Range("k" & i).Offset(, 3) = Range("k" & i)
    Next
    Application.ScreenUpdating = True
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub
A bientôt 🙂

P. S. : Bonjour, job75 😀
 
Re, bonsoir chère ânesse 🙂, Mytå,

Si la plage de destination peut être n'importe où ce n'est guère plus compliqué :
Code:
Sub Impairs()
Dim source As Range, dest As Range, ad$
Set source = [K2:K19] 'plage à copier, à adapter
Set dest = [M5] '1ère cellule de destination
ad = source(1).Address(0, RelativeTo:=dest)
With dest.Resize(source.Rows.Count)
  .Formula = "=IF(MOD(" & ad & ",2)," & ad & ","""")"
  .Value = .Value
End With
End Sub

Sub Pairs()
Dim source As Range, dest As Range, ad$
Set source = [K2:K19] 'plage à copier, à adapter
Set dest = [M5] '1ère cellule de destination
ad = source(1).Address(0, RelativeTo:=dest)
With dest.Resize(source.Rows.Count)
  .Formula = "=IF(NOT(MOD(" & ad & ",2))," & ad & ","""")"
  .Value = .Value
End With
End Sub
Fichier(2).

A+
 

Pièces jointes

Bonjour Guido, le forum,

Les plage source et destination peuvent être dans des feuilles différentes :
Code:
Sub Impairs()
Dim source As Range, dest As Range, ad$
Set source = Feuil2.[K2:K19] 'plage à copier, à adapter
Set dest = Feuil3.[A2] '1ère cellule de destination, à adapter
ad = source(1).Address(0, External:=True, RelativeTo:=dest)
With dest.Resize(source.Rows.Count)
  .Formula = "=IF(MOD(" & ad & ",2)," & ad & ","""")"
  .Value = .Value
End With
dest(0) = "Impairs"
Application.Goto dest(0) 'facultatif
End Sub

Sub Pairs()
Dim source As Range, dest As Range, ad$
Set source = Feuil2.[K2:K19] 'plage à copier, à adapter
Set dest = Feuil3.[A2] '1ère cellule de destination, à adapter
ad = source(1).Address(0, External:=True, RelativeTo:=dest)
With dest.Resize(source.Rows.Count)
  .Formula = "=IF(NOT(MOD(" & ad & ",2))," & ad & ","""")"
  .Value = .Value
End With
dest(0) = "Pairs"
Application.Goto dest(0) 'facultatif
End Sub
Fichier (3).

Bonne journée.
 

Pièces jointes

- 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

Discussions similaires

Réponses
10
Affichages
268
Réponses
5
Affichages
253
Réponses
2
Affichages
142
Réponses
6
Affichages
245
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…