Recopie en VBA de cellules disjointes dans des cellules disjpontes

  • Initiateur de la discussion Initiateur de la discussion Chrige
  • 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 !

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

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
 
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:
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

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
 
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+
 
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.
 
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+
 
- 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 Export données
Réponses
4
Affichages
481
Retour