XL pour MAC copie de valeur

Delorme

XLDnaute Occasionnel
Bonjour à tous
debutant mais passionne d'excel voici ce que je voudrais faire par vba

1)rentrer une valeur dans b20 la copier dans a20 la ça marche!
puis décaler a20 avec sa valeur d'une ligne en dessous et 2 colonnes plus loin
comme on peut le constater le décalage est bien fait mais sans valeur
pouvez vous m'aider

Sub copy()
Range("a20").Value = Range("b20").Value
Cells(20, 1).Offset(1, 2).Select
End Sub

2)faire la même chose mais avec une couleur dans b20

merci
michel
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Delorme,
Sans chercher à quoi ça peut bien servir, excepté être didactique, et pour le fun, trois possibilités parmi des milliers :
VB:
Sub Copy1()
    Range("A20") = Range("B20").Value
    Range("A20").Cut Destination:=Range("A20").Offset(1, 2)
    Range("B20").Cut Destination:=Range("B20").Offset(1, 2)
    Range("B20").Offset(1, 2).Interior.Color = vbGreen
End Sub
Sub Copy2()
    Range("A20").Offset(1, 2) = Range("B20").Value
    Range("B20").Cut Destination:=Range("B20").Offset(1, 2)
    Range("B20").Offset(1, 2).Interior.Color = RGB(255, 255, 0)
End Sub
Sub Copy3()
    Valeur = Range("B20")
    Range("B20").ClearContents
    Range("A20").Offset(1, 2) = Valeur
    Range("B20").Offset(1, 2) = Valeur
    Range("B20").Offset(1, 2).Interior.Color = RGB(255, 0, 255)
End Sub
 

Pièces jointes

  • Classeur3.xlsm
    15.3 KB · Affichages: 2

Delorme

XLDnaute Occasionnel
Bonjour Delorme,
Sans chercher à quoi ça peut bien servir, excepté être didactique, et pour le fun, trois possibilités parmi des milliers :
VB:
Sub Copy1()
    Range("A20") = Range("B20").Value
    Range("A20").Cut Destination:=Range("A20").Offset(1, 2)
    Range("B20").Cut Destination:=Range("B20").Offset(1, 2)
    Range("B20").Offset(1, 2).Interior.Color = vbGreen
End Sub
Sub Copy2()
    Range("A20").Offset(1, 2) = Range("B20").Value
    Range("B20").Cut Destination:=Range("B20").Offset(1, 2)
    Range("B20").Offset(1, 2).Interior.Color = RGB(255, 255, 0)
End Sub
Sub Copy3()
    Valeur = Range("B20")
    Range("B20").ClearContents
    Range("A20").Offset(1, 2) = Valeur
    Range("B20").Offset(1, 2) = Valeur
    Range("B20").Offset(1, 2).Interior.Color = RGB(255, 0, 255)
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Avant de livrer j'ai testé. :)
20221104_183646.gif

Attention, la cellule originale B20 est vide à la fin de la macro puisque on l'a déplacé, donc il faut y remettre quelques chose avant de faire le test.

Range("A20").Cut Destination:=Range("A20").Offset(1, 2)
On fait un couper de la cellule A20 puis on la colle en C21.
 

Delorme

XLDnaute Occasionnel
Bonjour Delorme,
Sans chercher à quoi ça peut bien servir, excepté être didactique, et pour le fun, trois possibilités parmi des milliers :
VB:
Sub Copy1()
    Range("A20") = Range("B20").Value
    Range("A20").Cut Destination:=Range("A20").Offset(1, 2)
    Range("B20").Cut Destination:=Range("B20").Offset(1, 2)
    Range("B20").Offset(1, 2).Interior.Color = vbGreen
End Sub
Sub Copy2()
    Range("A20").Offset(1, 2) = Range("B20").Value
    Range("B20").Cut Destination:=Range("B20").Offset(1, 2)
    Range("B20").Offset(1, 2).Interior.Color = RGB(255, 255, 0)
End Sub
Sub Copy3()
    Valeur = Range("B20")
    Range("B20").ClearContents
    Range("A20").Offset(1, 2) = Valeur
    Range("B20").Offset(1, 2) = Valeur
    Range("B20").Offset(1, 2).Interior.Color = RGB(255, 0, 255)
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Allez, comme il pleut, un petit essai avec :
VB:
Sub Copie()
    ' Faire ici la liste des adresses cellules à déplacer et dupliquer
    Liste = Array("A4", "B6", "C8", "D10", "A12", "B14", "C16", "D18")
    '-----------------------------------------------------------------
    Application.ScreenUpdating = False
    For i = 0 To UBound(Liste)
        Duplique Liste(i)
    Next
End Sub
Sub Duplique(N)
    With Range(N)
        Valeur = .Value
        .ClearContents
        .Offset(1, 1) = Valeur
        .Offset(1, 2) = Valeur
        .Offset(1, 2).Interior.Color = RGB(255, 255, 0)
    End With
End Sub
La liste des cellules se fait dans l'array Liste.
 

Pièces jointes

  • Classeur3 (V2).xlsm
    16.4 KB · Affichages: 1

Delorme

XLDnaute Occasionnel
Allez, comme il pleut, un petit essai avec :
VB:
Sub Copie()
    ' Faire ici la liste des adresses cellules à déplacer et dupliquer
    Liste = Array("A4", "B6", "C8", "D10", "A12", "B14", "C16", "D18")
    '-----------------------------------------------------------------
    Application.ScreenUpdating = False
    For i = 0 To UBound(Liste)
        Duplique Liste(i)
    Next
End Sub
Sub Duplique(N)
    With Range(N)
        Valeur = .Value
        .ClearContents
        .Offset(1, 1) = Valeur
        .Offset(1, 2) = Valeur
        .Offset(1, 2).Interior.Color = RGB(255, 255, 0)
    End With
End Sub
La liste des cellules se fait dans l'array Liste.
 

Delorme

XLDnaute Occasionnel
Bonjour Sylvanu
Bravo !
votre travail m'en donne beaucoup pour comprendre ce que vous avez fait
je vous en remercie et je vais étudier toutes ces pistes qui au départ je l'avoue étaient un peu confuses
En effet j'avais deux problèmes celui de la copie avec couleur et celui du décalage
je ne pensais pas que ce serait si compliqué

en faire une boucle me parait difficile et il faut que j'analyse tout votre travail et apprendre cette façon de procéder (j'en suis content)

Pour faire plus simple si ce n'est trop vous demander, pourriez vous me montrer comment faire une boucle
en rentrant une donnée au lieu de taper tout ce que je vous montre en copie


Sub dd()

Cells(2, 2).Interior.ColorIndex = Cells(3, 3).Value ' affiche n° rentre ****en b2
Cells(3, 2).Interior.ColorIndex = Cells(4, 3).Value ' affichen° rentre'****en b3
Cells(4, 2).Interior.ColorIndex = Cells(5, 3).Value ' affichen° rentre'****en b4
End Sub
••••ˇˇˇˇ

merci
michel
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Et toujours pas de fichier test. :mad: donc je vais me le taper.
Comprenez que je ne livre que des modules testés, contrairement à ce que vous disiez au post #4.
C'est le minimum.

Bizarre cette idée de mettre la couleur dans des cellules.
De plus il faut tester si ce nombre est inférieur à 56 car ColorIndex va de 1 à 56. Qui plus est le N° de couleur n'est pas sur la même ligne.
VB:
Sub dd()
For L = 2 To 36
    If Cells(L + 1, 3) <= 56 Then
        Cells(L, 2).Interior.ColorIndex = Cells(L + 1, 3).Value ' affiche n° rentre ****en b2
    Else
        Cells(L, 2).Interior.Color = xlNone                     ' Transparent si ColorIndex>56
    End If
Next L
End Sub
 

Pièces jointes

  • Couleur.xlsm
    16.3 KB · Affichages: 3

Discussions similaires

Réponses
7
Affichages
372
Réponses
4
Affichages
413

Statistiques des forums

Discussions
314 487
Messages
2 110 119
Membres
110 676
dernier inscrit
Hoolaurent