Range(ActiveCell.FormulaR1C1 = "+RC(1)").Select

  • Initiateur de la discussion Eric
  • Date de début
E

Eric

Guest
Sheets("TABLEAU").Select
Range(ActiveCell.FormulaR1C1 = "+RC(1)").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False


Bonjour,

Qu'est ce qui ne va pas dans ma ligne Range ? Je veux une fois des données copiées sur une autre feuille, coller ces données 1 colonne plus loin dans ma feuille tableau.

Si je suis en A6, venir coller les données en b6
Si je suis en A10, venir coller les données en b11
...

Merci de votre aide
 
V

Valérie

Guest
Salut Eric et tout le forum,

Je me tente à la réponse mais là j'avoue que je ne suis pas sure de réellement te venir en aide puisque pas vraiment sure d'avoir compris la question : Bref
En résumé j'ai écrit une ligne qui te permet de récupérer la valeur de ta cellule dans la cellule juste en dessous (+1 ligne)

Sheets("TABLEAU").Select
ActiveCell.Offset(1, 0) = ActiveCell

'Offset décale (ligne, colonne)

Mais ce qui m'inquiète le plus c'est : Si je suis en A10, venir coller les données en b11 avec mon code tu attéris en B10 et non pas B11!!

@+ j'espère au moins avoir fait avancer le schmilblick

Valérie
 
B

Bernard

Guest
Bonjour Eric

Range().select sélectionne la cellule définie entre les ()

ActiveCell.FormulaR1C1 = "=RC[1]" , cette ligne installe dans la cellule active une formule qui lui donne la valeur de la cellule immédiatement à sa droite.

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False colle la valeur du presse papier dans la cellule active.

Donc si j'ai bien compris tu veux mettre la valeur immédiatement à droite de la cellule active dans la cellule active.

D'ou la ligne :

Sheets("TABLEAU").Select
ActiveCell.Value = ActiveCell.Offset(0, 1).Value

Cordialement

Bernard
 
M

Moa

Guest
Oups !

On s'est croisé !!

Mais je crois avoir compris qu'il voulait un décalage de 1 ligne et une colonne.

Pas sur, car une fois il demande de A6 vers B6 et après de A10 vers B11...??

Je crois Bernard que tu as inversé ce qu'il voulait...!

@ +

Moa
 
E

Eric

Guest
Je me suis mal exprimé c'est B10 que je voulais dire.

En fait, je veux en étant positionné sur une celulle dans la colonne A, venir coller des données sur la colonne B et D. Pour l'instant, j'ai mis Range("b6").Select et pareil pour D6. Le problème c'est que cela ne marche que sur ma ligne 6.

Avec offset, cela ne marche pas. J'essaye de vous envoyer le fichier en txt.

Merci à tous.
 

Pièces jointes

  • macro.zip
    476 bytes · Affichages: 68
  • macro.zip
    476 bytes · Affichages: 75
  • macro.zip
    476 bytes · Affichages: 78
B

Bernard

Guest
Rebonjour Eric

Je comprends que lorsque on débute en VBA, c'est un peu comme vouloir parler le chinois quand on n'est pas né en chine.

Tu as trouvé, c'est bien, tu aurais gagné du temps et nous aussi à prendre 5 minutes pour expliquer clairement ton problème. Bien expliquer ce que l'on veut, c'est une forme de politesse pour ceux qui vont te lire.

Si Selection.Offset(0, 1).Range("A1").Select est ta solution,

Range("A1").Offset(0, 1).select est plus exact

J'ai pris le temps de lire le fichier texte de la macro, lui aussi peut être simplifié comme suit, si j'ai bien compris tes souhaits biensûr !!!


Sub Détailsmeubles()
Sheets("DONNEES").Select
Range("D1:E1").Select

Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=Range("TABLEAU!A6").Value
Selection.AutoFilter Field:=2, Criteria1:="Caisson"
Range("D2:E2781").Copy
Sheets("TABLEAU").Range("B6").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False

Selection.AutoFilter Field:=2, Criteria1:="Tiroir"
Range("D2:E2781").Copy
Sheets("TABLEAU").Range("D6").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False

Selection.AutoFilter Field:=2, Criteria1:="Contre marque"
Range("C2:E2781").Copy
Sheets("TABLEAU").Range("F6").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False

Selection.AutoFilter Field:=2, Criteria1:="Accessoire"
Range("C2:E2781").Copy
Sheets("TABLEAU").Range("I6").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False

ActiveSheet.ShowAllData
Sheets("TABLEAU").Select
End Sub

Bien cordialement

Bernard
 
E

Eric

Guest
Merci Bernard. Tu as tout à fait raison pour les 5 minutes.

Maintenant, j'essaye de modifier la macro pour remplacer "Tableau!A6" par
la cellule active dans la feuille Tableau.

Selection.AutoFilter Field:=1, Criteria1:=Range("TABLEAU!A6").Value

Le but est de me positionner dans une celulle de la colonne A de la feuille tableau, et de recopier les informations de ma feuille "données" en fonction du critère de la cellule où je suis positionné.

J'espère que c'est à peu près clair.

Merci si tu peux quelque chose pour moi.
 

Discussions similaires

Réponses
2
Affichages
138
Réponses
5
Affichages
137

Statistiques des forums

Discussions
312 371
Messages
2 087 709
Membres
103 648
dernier inscrit
mehdi kaddaf