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

XL 2021 code que je n'arrive pas à faite fonctionner avec Range("ActiveCell.Offset(0, 0).Resize(10, 1)")

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous

Grrrr !!! encore dans les choux

Mon besoin
dans ce fichier "test1"il me faut importer des valeurs du classeur "test2" (les 2 fichiers sont ouverts)
J'ai trouvé sur le net (le lien est en haut dans le classeur) comment le faire
Ce code fonctionne nickel
VB:
Sub Macro1()
Workbooks("test1").Sheets("Feuil1").Range("a2:a100") = Workbooks("test2").Sheets("Feuil1").Range("l2:l100").Value
End Sub

En revanche, j'ai besoin de coller à partir de la cellule active dans mon fichier "test1"
J'ai fait ce code
Code:
Sub Macro1()
Workbooks("test1").Sheets("Feuil1").Range("ActiveCell.Offset(0, 0).Resize(10, 1)") = Workbooks("test2").Sheets("Feuil1").Range("l2:l100").Value
End Sub
Qui beug avec cette information

Je n'arrive pas à trouver mon erreur.

Pourriez-vous m'aider ?
En cas, je joins les 2 fichiers test

Un grand merci à toutes et à tous
 

Pièces jointes

  • test1.xlsm
    18.3 KB · Affichages: 7
  • test2.xlsm
    8.5 KB · Affichages: 8

Staple1600

XLDnaute Barbatruc
Re, Bonjouer @laurent950

@Usine à gaz
Conseil en passant
Quand tu bloques sur un code VAB, utilises des MsgBox (comme je l'ai fait) pour voir d'où peut venir l'erreur de syntaxe.

PS: Tu remarqueras que dans le code de @laurent950, la taille des plage est identique
Enrichi (BBcode):
' Copie
    Ftest1.Range("A2:A100").Value = Ftest2.Range("L2:L100").Value
C'était ce que devait te montrer le test du message#2
A savoir que dans ton code initial, la taille n'était pas identique.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr Laurent
Merci à toi c'est nickel
Merci aussi pour toutes tes explications...
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-JM
Si tu veux bien m'accorder encore un peu de ton temps, je voudrais comprendre mon erreur :
tu me dis : que la taille des plages ne sont pas identiques dans mon code initial
C'était vrai bien sûr !
J'ai donc modifié mon code comme ceci :
VB:
Workbooks("test1").Sheets("Feuil1").Range("ActiveCell.Offset(0, 0).Resize(99, 1)") = Workbooks("test2").Sheets("Feuil1").Range("L2:L100").Value
Si je reprends mon code
Partie 1 :
Workbooks("test1").Sheets("Feuil1").Range("ActiveCell.Offset(0, 0).Resize(99, 1)") =
j'ai 99 cellules concernées

Partie 2 :

Workbooks("test2").Sheets("Feuil1").Range("L2:L100")
j'ai aussi 99 cellules concernées
Donc plages identiques semble-t-il

Alors pourquoi ça beug avec ce message ?

Je n'arrive pas à comprendre ???
 

laurent950

XLDnaute Accro
Re @Usine à gaz

en Poste #14 tu as la réponse
tu as noté
"test1"
Mais c'est .xlsm qu'il faut Noté
"test1.xlsm"

Soit :
Workbooks.Item("test2.xlsm")
Ou
Workbooks("test2.xlsm")
Mais
.xlsm ou une Autres extension
Puis
Le fichier doit être ouvert bien sûr Lionel

VB:
Sub Macro1()
Workbooks("test1.xlsm").Sheets("Feuil1").Range("a2:a100") = Workbooks("test2.xlsm").Sheets("Feuil1").Range("l2:l100").Value
End Sub
 

laurent950

XLDnaute Accro
Re @Usine à gaz

C'est une autres demandes Lionel et bien sur que ca fonctionne.

VB:
Sub Macro1()
Workbooks("test1.xlsm").Sheets("Feuil1").Range("a2:a100").Select
'OU
' La cellule Active est A2 (Pour l'exemple ci-dessus)
' Avec Select tu veras a l'écrans les plages que tu selectionnes Lionel
Workbooks("test1.xlsm").Sheets("Feuil1").Range(ActiveCell, ActiveCell.Offset(98, 0)).Select
End Sub

Explication :
Si vous voulez sélectionner une plage qui commence à partir de la cellule active et qui s'étend sur 99 lignes dans une seule colonne, vous pouvez le faire comme ceci
Alors :
Workbooks("test1.xlsm").Sheets("Feuil1").Range(ActiveCell, ActiveCell.Offset(98, 0))
et donc :
Cela utilisera la cellule active comme coin supérieur gauche de la plage et la fonction Offset pour spécifier le coin inférieur droit de la plage, qui est décalé de 98 lignes vers le bas par rapport à la cellule active.

J'espère que cela va t'aider Lionel

Laurent
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
je l'ai mis au #Post 18
J'ai donc modifié mon code comme ceci :
code
VB:
Workbooks("test1").Sheets("Feuil1").Range("ActiveCell.Offset(0, 0).Resize(99, 1)") = Workbooks("test2").Sheets("Feuil1").Range("L2:L100").Value
Si je reprends mon code
Partie 1 :
Workbooks("test1").Sheets("Feuil1").Range("ActiveCell.Offset(0, 0).Resize(99, 1)") =
j'ai 99 cellules concernées

Partie 2 :

Workbooks("test2").Sheets("Feuil1").Range("L2:L100")
j'ai aussi 99 cellules concernées
Donc plages identiques semble-t-il

Alors pourquoi ça beug avec ce message ?

Je n'arrive pas à comprendre ???

Même si j'ajoute .xlsm, ça ne fonctionne pas.
 

Staple1600

XLDnaute Barbatruc
Re

Relire mes posts, et les tests avec MsgBox
La taille des plages doivent être identiques
Ce qui veut dire
Meme nombre de lignes et de colonnes
Donc encore un test MsgBox
Sub test_taille()
Dim Plage As Range
Set Plage = Range("I2:I100")
MsgBox "Nombre de lignes: " & Plage.Rows.Count & vbCr & "Nombre de colonne: " & Plage.Columns.Count
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
lol
Mais B....L, j'ai le même nombre de lignes et de colonnes concernées :
Partie 1 :
Workbooks("test1").Sheets("Feuil1").Range("ActiveCell.Offset(0, 0).Resize(99, 1)") =
j'ai 99 cellules concernées

Partie 2 :

Workbooks("test2").Sheets("Feuil1").Range("L2:L100")
j'ai aussi 99 cellules concernées

Sur 1 colonne pour les 2

Grrrrr !!!! je vire au vert
 

Staple1600

XLDnaute Barbatruc
Re

@Usine à gaz
Tu as zappé le message où je parle d'erreur de syntaxe...

Encore un test illustratif
Code:
Sub test_taille_B()
Dim Plage As Range, Active As Range, Plage2 As Range
Set Plage = Range("I2:I100")
MsgBox "Nombre de lignes: " & Plage.Rows.Count & vbCr & "Nombre de colonne: " & Plage.Columns.Count, , "Plage1"
MsgBox Plage.Address
Set Active = Range("K2")
MsgBox Active.Resize(99).Address
Range("C3").Select
Set Plage2 = Range("C3").Resize(Plage.Rows.Count)
MsgBox "Nombre de lignes: " & Plage2.Rows.Count & vbCr & "Nombre de colonne: " & Plage2.Columns.Count, vbInformation, "Plage2"
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Hi,

Perso, si que j'srais Arthour, que j'testrais carrément ça :
VB:
Sub Macro1()
Workbooks("test1").Sheets("Feuil1").Range("en partant de la cellule active, agrandir à dix lignes") = Workbooks("test2").Sheets("Feuil1").Range("l2:l100").Value
End Sub








 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
327
Réponses
12
Affichages
712
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…