Insérer QUE les valeurs de plusieurs cellules (en VBA)

Marcham

XLDnaute Junior
Bonjour,
Imaginez, dans une feuille "Calcul" vous avez élaboré des résultats à partir de formule.
Par exemple :
En A1 vous avez " ronds verts" en B1, le chiffre "3"
A2 --> "cerises rouges foncées" B2 --> 28
A3 --> "Voitures en pannes" B3 ---> -1
En C1 vous avez la formule : =SUPPRESPACE(A1) et en D1 =B1 * 4

Vous avez "tirer" les formules placées en C1 et D1 jusqu'à la ligne 3.
Avec le VBA, je souhaite copier la plage C1 : D3
Ouvrir la page "MetCaLà" et insérer QUE les valeurs de ma sélection dans un tableau à partir de (exemple) A22.
Voici ce que j'ai :
Range("C1 : D3").Select Naturellement je suis alors dans la feuille "Calcul"
Selection.Copy
Sheets("MetCaLà").Select
Rows("22 : 24").Select
Selection.Insert Shift:=xlDown

J'ai fait ça à partir d'une macro en utilisant le click droit - Insérer les cellules copiées - Décaler les cellules vers le bas.
Du coup les lignes se décalent bien, mais toutes les cellules marques #REF!
Certes, je pourrais d'abord insérer 3 lignes puis faire
Range("A22").Select
Selection.PasteSpecial Paste:=xlPasteValues

mais n'y a t'il pas la possibilité de faire un "PasteSpecial" avec la fonction"Insert" ??
Je vous remercie par avance - Marc
 

Paritec

XLDnaute Barbatruc
Bonjour Marc le forum
a+
Papou:)
VB:
Sub test()
  Sheets("MetCaLà").Rows("22:24").Insert shift:=xlDown
  Sheets("Calcul").Range("C1 : D3").Copy
  Sheets("MetCaLà").Range("A22").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End Sub
 

Marcham

XLDnaute Junior
Merci Paritec.
Tu confirmes donc bien à travers ton code qu'il n'est pas possible de faire "PasteSpecial" avec la fonction"Insert"
Je vais expliqué ce qui m'est passé par la tête pour en arriver jusque là.
Je trouve absurde d'aller dans une feuille 1 (pour créer les lignes) puis d'aller dans la feuille 2 (pour copier) et de retourner dans la feuille 1 (pour mettre les courses au frigo).
Moi, si je veux aller d'Hanovre à Paris, je ne vais pas d'abord à Paris faire le lit puis retourner à Hanovre pour récupérer ma valise.
Mais bon, en VBA, je ne paie pas l'avion, mais tout de même, quel perte de temps.
Enfin, je vais chercher encore.
 

Paritec

XLDnaute Barbatruc
Re Bonjour Marcham le forum
bah tu donnes des leçons de rapidité, mais quand je regardes la macro que tu as fait!!!! ?????
Uniquement sortie de l'enregistreur de macro à mon sens.
Bref c'est pas grave réponse pour rien
a+
Papou:)
 

Marcham

XLDnaute Junior
Ah non, je n'ai pas la prétention de donner des leçon de quoique ce soit.
Et dans mon texte, j'ai bien précisé que je l'ai fait à partir d'une macro.
Et puis il ne faut pas croire qu'il y a des réponses "pour rien".
J’amène une réflexion en même temps qu'une question.
Mais je tiens tout de même à te remercier, tu participes à cette réflexion et pour l'instant tu es bien le seul.
Encore merci Papou
Marc
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Une autre syntaxe possible pour:
"Insérer QUE les valeurs de plusieurs cellules (en VBA)"
VB:
Sub Test1()
Dim a As Range: Set a = Sheets(1).Range("C1:D3")
Sheets(2).Range("A22").Resize(a.Rows.Count, a.Columns.Count).Value = a.Value
End Sub
 

Marcham

XLDnaute Junior
Merci JM
J'ai rajouter de quoi créer les lignes avec Rows("24:22").Insert Shift:=xlDown

Voilà une logique qui me plait bien, je n'ai pas besoin de retourner chercher mes valises.
N'utilisant pas beaucoup ce site, je ne sais pas encore on clos la discussion.
Merci encore - Marc
 

Paritec

XLDnaute Barbatruc
Bonjour Jean Marie:) le forum
la macro que tu as proposé redimensionne ta cellule A22 mais, colle ton tableau en A22 A23 et A24 et colonne B aussi bien sur mais les lignes ne sont pas insérées, ton tableau est collé.
Mais à aucun moment on insère des lignes
hors c'est cela qu'il demandait insérer et coller en même temps
a+
Papou:)
 

Paritec

XLDnaute Barbatruc
Re Marc le forum
Mais cela revient exactement au même que ce que je t'avais proposé, tu vas bien dans la feuille 2 insérer tes lignes et ensuite tu mets avec la macro de jm les données en tableau en partant de la feuille 1 pour les coller dans la feuille 2
Il y a bien trois exécutions les unes derrière les autres
donc pas d'évolution pour moi.
Mais si je trouve une méthode je ne manquerai pas de revenir te le signaler
a+
papou:)
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum, Marcham, Paritec

Bonjour Jean Marie:) le forum
la macro que tu as proposé redimensionne ta cellule A22 mais, colle ton tableau en A22 A23 et A24 et colonne B aussi bien sur mais les lignes ne sont pas insérées, ton tableau est collé.
Mais à aucun moment on insère des lignes
hors c'est cela qu'il demandait insérer et coller en même temps
a+
Papou:)

@Paritec
Comme je l'ai précisé, ma proposition ne "propose" qu'une autre syntaxe possible pour un simili "copier/valeurs seules"

Et comme le demandeur n'a pas jugé utile de joindre un fichier exemple, je n'ai jugé utile de pousser plus loin mes tests ;)
 

Marcham

XLDnaute Junior
Non mais ne vous inquiétez pas, cela me convient ainsi. Certes le nombre de ligne est peut-être inchangée mais la chronologie me semble plus logique.
Oui, c'est vrai que j'aurai aimé un "coller les valeurs" avec la fonction "Insert Shift:=xlDown" mais après tout, je me dis que ce n'est pas possible.
Je n'ai pas joint de fichier exemple parce que je n'ai pas regardé comment on fait sur le site et puis l'élaboration de ma question est d'une grande simplicité.
Et si jamais on trouve quelque chose d'encore plus sympa, pour ma part, j'en ferais part ici tout comme chacun d'entre nous.
Merci encore - Marc
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505