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