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

Copie de plage de cellules (variables) en VBA

  • Initiateur de la discussion Initiateur de la discussion Macpoy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Macpoy

XLDnaute Impliqué
bonsoir le forum,
présentation du décors:
j'ai un classeur de facturation dans lequel je compile (sur une feuille "vente") des données pour les recopier dans un classeur de comptabilité.
j'ai pour le moment créer une macro qui (depuis le classeur facturation):
- me permet d'ouvrir le classeur de comptabilité,
- crée une copie de la feuille vente et la place dans le classeur compta
- transfert les données utiles de cette copie vers la véritable feuille du classeur compta.
mais la ou j'ai besoin des excelliens de ce site, c'est que j'ai 2 impératifs pour cette copie de données : - si elle occupe plus de 83 lignes alors je dois insérer autant de lignes nécessaires dans la feuille de destination(au dessus de la ligne 83).
- les données ne doivent concerner que celles du mois précèdent.
pour plus de compréhension, je joint un classeur exemple ou la feuille venant du classeur facturation est déjà transférée dans le classeur de destination. j'ai mis des commentaires dans les macros pour vous aiguiller un peu. seules les zones vertes sont concernées par la copie des données.
je ne pense pas avoir donner toutes les infos, mais déjà avec ça je vous souhaite de comprendre mon PB;
merci par avance de l'aide que vous m'apporterez.
 

Pièces jointes

Re : Copie de plage de cellules (variables) en VBA

Re le forum,
je viens de corriger une petite erreur dans le fonctionnement de la macro recopie2.
ci-joint le classeur modifié.
 

Pièces jointes

Dernière édition:
Re : Copie de plage de cellules (variables) en VBA

Bonjour le forum,
avec cette macro légèrement retravaillé, j'obtiens le résultat souhaité.
elle rame un peu en exécution mais bon.

Sub Recopie()
'Thierry's Demo sur Excel Downloads - Accueil, December 2002
'adaptée pour mes besoins
Dim cell As Range
Dim MaPlage As Range
Dim i As Integer
Dim iF2 As Integer
Dim ZoneA() As String, ZoneB() As String, ZoneC() As String, ZoneD() As String, ZoneE() As String
Dim ZoneF() As String, ZoneG() As String, ZoneH() As String, ZoneI() As String

Filtre = InputBox("Filtrez un mois !")
Sheets("Ventes(2)").Select

Sheets("Ventes(2)").Range("L1").Select

Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=Filtre



iF2 = 2

Set MaPlage = Vente.Range("A2", Range("A200").End(xlUp).Address)
Set MaPlage = MaPlage.SpecialCells(xlCellTypeVisible)

ReDim ZoneA(0 To MaPlage.Count - 1)
ReDim ZoneB(0 To MaPlage.Count - 1)
ReDim ZoneC(0 To MaPlage.Count - 1)
ReDim ZoneD(0 To MaPlage.Count - 1)
ReDim ZoneE(0 To MaPlage.Count - 1)
ReDim ZoneF(0 To MaPlage.Count - 1)
ReDim ZoneG(0 To MaPlage.Count - 1)
ReDim ZoneH(0 To MaPlage.Count - 1)
ReDim ZoneI(0 To MaPlage.Count - 1)
For Each cell In MaPlage
ZoneA(i) = cell.Value
Test.Range("A" & iF2) = ZoneA(i)
ZoneB(i) = cell.Offset(0, 1)
Test.Range("B" & iF2) = ZoneB(i)
ZoneC(i) = cell.Offset(0, 2)
Test.Range("C" & iF2) = ZoneC(i)
ZoneD(i) = cell.Offset(0, 3)
Test.Range("D" & iF2) = ZoneD(i)
ZoneE(i) = cell.Offset(0, 4)
Test.Range("E" & iF2) = ZoneE(i)
ZoneF(i) = cell.Offset(0, 5)
Test.Range("F" & iF2) = ZoneF(i)
ZoneG(i) = cell.Offset(0, 6)
Test.Range("G" & iF2) = ZoneG(i)
ZoneH(i) = cell.Offset(0, 7)
Test.Range("H" & iF2) = ZoneH(i)
ZoneI(i) = cell.Offset(0, 8)
Test.Range("I" & iF2) = ZoneI(i)
i = i + 1
iF2 = iF2 + 1
Next cell


End Sub

bonne journée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
257
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…