VBA Excel : Création de Ranges par concaténation de 2 autres
Résolumikel831 Messages postés 220 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans le bout de code suivant, je cherche à créer deux ranges Origine et Destination par concaténation d'un range NF et des offset:
Sub Bout_de_Code_3()
Dim NJ, Origine, Destination As Range
Sheets("MaFeuil").Select
Set NJ = ActiveCell
Set Origine = NJ : NJ.Offset(0, 3)
Set Destination = NJ.Offset(1,0) : NJ.Offset(7,3)
End Sub
Mais ce code est incorrect car ça bugue ... et je ne trouve pas les erreurs ???
Windows / Chrome 123.0.0.0
- VBA Excel : Création de Ranges par concaténation de 2 autres
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
Bonsoir Mike,
Malgré que vous ayez oublié d'indiquer votre code, je vais essayer de vous expliquer le principe.
Si les données de la plage NF sont dans la colonne A, par exemple, vous pouvez utiliser A1:A10.
Pour la plage origine vous saisissez =OFFSET(A1,2,0,10,1)
Pour la plage destination vous saisissez: =OFFSET(A1,-2,0,10,1)
Bonjour,
Lors des déclarations des variables, il faut toutes les déclarer
La syntaxe "NJ, Origine, Destination As Range" n'est pas correcte.
Ensuite, Offset ne fait que décaler la plage.
Dans ce cas, il serait plus importun d'essayer ce code :
Sub Bout_de_Code_3()
Dim NJ As Range, Origine As Range, Destination As Range
With Sheets("MaFeuil")
Set NJ = .Range("A1") 'par exemple, cellule A1
Set Origine = NJ.Offset(0, 3) 'donc cellule D1
Set Destination = NJ.Offset(7, 3) 'donc cellule G7
End With
End Sub
Bruno, ça marche pas top, ChatGpt, non?
Merci pour vos réponses!
Mais, malheureusement ce n'est pas exactement ce que je souhaite obtenir. Je me suis probablement mal exprimé !
Si NJ est par exemple en A1 (mais il peux être n'importe où, c'est pour cela que je nomme ce range NJ dans mon code ) je dois obtenir:
1) Origine égal à la zone A1: B1 en codant avec NJ et des offset
2) Destination égal à la zone A2: B8 toujours exprimé avec NJ et des offset
Re-,
C'est bien ce que je te disais, Offset ne fait que décaler.
Pour décaler et définir une plage plus (ou moins) conséquente, il faut en plus utiliser Resize...
Dans ton cas :
Sub Bout_de_Code_3()
Dim NJ As Range, Origine As Range, Destination As Range
With Sheets("Feuil1") 'j'ai modifié le nom de l'onglet
Set NJ = .Range("A1") 'par exemple, cellule A1
NJ.Select 'pour essai
Set Origine = NJ.Resize(1, 2) 'donc plage A1:B1
Origine.Select 'pour essai
Set Destination = NJ.Offset(1, 0).Resize(7, 2) 'donc plage A2:B8
Destination.Select 'pour essai
End With
End Sub
J'ai mis les instructions .Select, afin que tu puisses observer les définitions des plages
Il y a eu un bug, je n'avais que votre question, puis lorsque je suis revenu, je vois que vous avez indiqué votre code. En plus j'avais mal interprété ce que vous désiriez faire exactement.
C'était presque ca, je vous ai repris les erreurs :
Sub Bout_de_Code_3()
Dim NJ As Range, Origine As Range, Destination As Range
Set NJ = Sheets("MaFeuil").ActiveCell
Set Origine = NJ.Offset(0, 3)
Set Destination = NJ.Offset(1,0).Resize(7,3)
End Sub
Désolé, mais je ne comprends pas ta réponse ???