Recopie en VBA de cellules disjointes dans des cellules disjpontes

Chrige

XLDnaute Occasionnel
Bonjour

Je souhaite recopier des cellules disjointes dans des cellules disjointes en une seule passe

Exemple si je suis en N6 et que je sélectionne la cellule N3
Je souhaite recopier les cellules N3 vers N6, mais aussi la cellule Q3 vers Q6

(Les colonnes ne changent jamais, seules les lignes changent,
la recopie se fait toujours à partir de la même ligne et toujours vers une seule et même ligne,
Ex : N4 et Q4 vers N9 et Q9 ou encore N5 et Q5 vers N15 et Q15)

Pour N3, cela ne pose bien sûr pas de problème
Mais pour Q3, au mieux la recopie se fait en O6

Merci pour une aide
A+
 

Pièces jointes

  • Recopie Cellules Disjointes.xlsm
    20 KB · Affichages: 33
  • Recopie Cellules Disjointes.xlsm
    20 KB · Affichages: 25
  • Recopie Cellules Disjointes.xlsm
    20 KB · Affichages: 24

PMO2

XLDnaute Accro
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Bonjour,

Essayez avec ce code
Code:
Sub Recopie()
Dim R As Range
Dim C As Range
Dim Lig&
'---
On Error Resume Next
Set R = Application.InputBox("Est-ce la bonne cellule à copier ?" _
        , , ActiveCell.Offset(-1).Address, Type:=8)
On Error GoTo 0
If R Is Nothing Then Exit Sub
Set R = Application.Union(R, R.Offset(0, 3))
Lig& = ActiveCell.Row - R.Row
For Each C In R
  C.Copy
  C.Offset(Lig&, 0).PasteSpecial xlPasteFormats 'ne recopie que les formats
Next C
Application.CutCopyMode = False
End Sub
 

PMO2

XLDnaute Accro
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Code:
C.Offset(Lig&, 0).PasteSpecial xlPasteFormats 'ne recopie que les formats
C'est ce qu'il y avait à l'origine de ton fichier.
Il suffit donc de faire un xlPasteAll ou quelque chose comme cela.
 
Dernière édition:

Chrige

XLDnaute Occasionnel
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Re,

Merci pour la correction
J'avais mal regardé ce midi faute de temps

Je viens de remplacer
Code:
  C.Copy
  C.Offset(Lig&, 0).PasteSpecial xlPasteFormats
Par
Code:
  C.Copy
  C.Offset(Lig&, 0).PasteSpecial xlAll
Et cela fonctionne parfaitement



Cependant je suis troublé, car dans ma macro d'origine j'utilisais un peu la même syntaxe ???
Code:
            rg.Copy
            ActiveCell.PasteSpecial xlPasteFormats
et cela fonctionnait parfaitement



Autre chose d'inexplicable et ce n'est pas faute de chercher !
Si je commande ta macro directement par Alt F8, cela fonctionne sans problème
Si je la commande avec un bouton, je ne peux dans l'Imputbox choisir la cellule au clavier
Je peux le faire uniquement avec la souris !

Le code pour l'Imputbox est pourtant le même que dans ma macro
Et quand je commande ma macro avec le même bouton, je n'est pas ce problème !

Je ne sais pas si tu vas bien me comprendre
Pour que tu t'en rende compte, je joins à nouveau mon fichier dans lequel j'ai mis ta macro
Appuie que le bouton bleu qui commande ta macro
et essaye au clavier de sélectionner par exemple la cellule N3
C'est impossible

Essaye avec le bouton vert de ma macro d'origine
Là il n'y a pas de problème

Enfin lance ta macro avec Alt F8 (Recopie2)
Là non non plus le problème n'existe pas

J'ai bon chercher, je ne vois vraiment d’où vient le problème ??


A+
 

Pièces jointes

  • Recopie Cellules Disjointes.xlsm
    24.2 KB · Affichages: 15
  • Recopie Cellules Disjointes.xlsm
    24.2 KB · Affichages: 21
  • Recopie Cellules Disjointes.xlsm
    24.2 KB · Affichages: 24

PMO2

XLDnaute Accro
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Essayez avec ce code modifié
Code:
Sub Recopie3()
Dim R As Range
Dim C As Range
Dim Cible As Range
Dim Lig&
'---
Cells(ActiveCell.Row, 14).Select
Set Cible = ActiveCell
'---
On Error Resume Next
Set R = Application.InputBox("Est-ce la bonne cellule à copier ?" _
        , , ActiveCell.Offset(-1).Address, Type:=8)
On Error GoTo 0
If R Is Nothing Then Exit Sub
Set R = Application.Union(R, R.Offset(0, 3))
Lig& = Cible.Row - R.Row
For Each C In R
  C.Copy
  C.Offset(Lig&, 0).PasteSpecial xlPasteAll
Next C
Cible.Select
Application.CutCopyMode = False
End Sub
 

Chrige

XLDnaute Occasionnel
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Bonjour

Ce dernier code fonctionne à la perfection
Je ne savais pas qu'un code pouvait ne pas fonctionner si il était commander par un bouton ??

Si tu as le temps de documenter un peu ton code, cela me permettrait de bien le comprendre
Dans tous les cas, je te remercie beaucoup pour ton aide
Je n'y serais certainement pas arrivé seul

A+
 

PMO2

XLDnaute Accro
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Plutôt que de documenter le code, ajoutez un Stop provisoire au début de la procédure
Code:
Dim Lig&
'---
Stop    '/// à virer par la suite
Cells(ActiveCell.Row, 14).Select
Lancez la procédure, elle s'arrêtera au Stop.
Puis, appuyez sur F8 pour que le code se déroule pas à pas (et ainsi de suite).
Vous pourrez visualiser ce qui se passe sur la feuille Excel instruction par instruction et identifier l'action de chaque ligne de code.
 

Chrige

XLDnaute Occasionnel
Re : Recopie en VBA de cellules disjointes dans des cellules disjpontes

Merci

Cela n'explique pas tout
Mais cela permet en effet de comprendre le déroulement de la procédure et de voir ou cela plante en cas d'erreur
Je m'en resservirai à l'avenir
Merci encore

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 236
dernier inscrit
Menni