OVH Cloud OVH Cloud

Copier des cellules avec qqc à l'intérieur ?

5 réponses
Avatar
boubou21
bonjour,

j'ai ceci comme code.


With workbooks("Temp.xls").Worksheets("BDtemp")
.Activate
.range("A2:E900").Select
.range("A2:E900").Copy
End With

Je m'en sert pour copier ce qu'il y a sur un fichier excel vers un
autre fichier excel.

ce que j'aimerais, à la place de copier une plage A9 à E900 j'aimerais
copier que celle qui ont un contenu et si l'utilisateur en ajoute, la
plage s'agrandit.

comment faire ????

merci

5 réponses

Avatar
Jean-François Aubert
Salut boubou21,
Quelques exemples:

'#################################
'de michdenis / MPFE

La cellule indiquée par Ctrl + Fin n'est pas nécessairement la dernière cellule de la feuille.
Regarde dans l'aide, l'objet
"UsedRange".
Excel se souvient de l'adresse de la dernière cellule contenant de l'information même si cette
dernière a été effacée.

Si tu veux la dernière cellule représentant le point de rencontre de la dernière ligne avec la
dernière colonne, je te
propose ceci :

Affiche dans un message box : l'adresse de la plage.
Je ne sais pas ce que tu veux en faire, mais habituellement il y a moyen de procéder sans effectuer
de sélection !
'-------------------------

Sub DernièreCelluleDeLaFeuille() Dim R As Integer, C As Long

With Worksheets("Feuil1")
R = .Cells.Find("*", .Cells.Item(1), , , , xlPrevious).Row
C = .Cells.Find("*", .Cells.Item(1), , , , xlPrevious).Column
Range(.Cells(1, 1), .Cells(R, C)).Select
End With

End Sub
'###########################

'extrait de l'aide

CurrentRegion, propriété - Exemples

Cet exemple montre comment sélectionner la zone en cours de la feuille « Sheet1 ».

Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
Cet exemple suppose que la feuille « Sheet1 » contient un tableau avec une ligne d'en-tête. Il
montre comment sélectionner le tableau sans sélectionner la ligne d'en-tête. La cellule active doit
se trouver quelque part dans le tableau avant d'exécuter l'exemple.

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select

--------------------------------------------
UsedRange, propriété - Exemple

Cet exemple montre comment sélectionner la plage utilisée dans la feuille Sheet1.

Worksheets("Sheet1").Activate
ActiveSheet.UsedRange.Select
'###############################
tiré de http://dj.joss.free.fr/faq.htm#usedcur

Quelle est la différence entre UsedRange et CurrentRegion? Denis Martin
Voyons la différence entre UsedRange et CurrentRegion
en posant l'hypothèse que la feuille "Feuil1" contient 4 plages de cellules différentes, à savoir:

A1:D9
B12:D14
E18:G24
H14:J16

UsedRange
UsedRange permet de sélectionner une plage de cellules qui comporte des plages de cellules
discontinues.

Sub testUsedRange()
Worksheets("Feuil1").Activate
ActiveSheet.UsedRange.Select
'// Permet de sélectionner la plage de cellules A1:J24
'// qui inclut nos 4 plages de cellules discontinues contenues dans la feuille Feuil1..
End Sub
-----------------------------------------
CurrentRegion
CurrentRegion permet de sélectionner la plage de cellules où se trouve le pointeur de cellule
si celui-ci est situé dans cette plage de cellules.
Si le pointeur de cellule est situé sur une cellule contigüe à la plage de cellules,
alors la plage de cellules et les cellules contigües aux rangées ou aux colonnes de cette plage
qui sont situées sur la même rangée ou colonne du pointeur de cellule sont sélectionnées.
Si le pointeur de cellule est situé à l'intersection d'une colonne et d'une rangée contigües à la
plage de cellules,
alors la plage de cellules, la colonne et la rangée situées sur la même rangée ou colonne du
pointeur de cellule sont sélectionnées.
'##############################
si la dernière colonne est connue et que la dernière ligne est dans une colonne connue:
Range("A1:G" & Range("C65536").End(xlUp)(1).Row).Select

si la dernière ligne est connue et que la dernière la cellule la plus à droite est dans une ligne
connue:
Range(Cells(1, 1), Cells(5, Range("IV4").End(xlToLeft).Column)).Select


--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


a écrit dans le message de
news:
bonjour,

j'ai ceci comme code.


With workbooks("Temp.xls").Worksheets("BDtemp")
.Activate
.range("A2:E900").Select
.range("A2:E900").Copy
End With

Je m'en sert pour copier ce qu'il y a sur un fichier excel vers un
autre fichier excel.

ce que j'aimerais, à la place de copier une plage A9 à E900 j'aimerais
copier que celle qui ont un contenu et si l'utilisateur en ajoute, la
plage s'agrandit.

comment faire ????

merci


Avatar
AV
S'il s'agit simplement de la plage A9:Ex, pour sélectionner de A9 jusqu'à la
dernière cellule renseignée (la "vraie UsedRange" !)

Sub UsedRange_A9()
Range(Cells(9, "A"), Cells(Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row,
"E")).Select
End Sub

AV

a écrit dans le message news:

bonjour,

j'ai ceci comme code.


With workbooks("Temp.xls").Worksheets("BDtemp")
.Activate
.range("A2:E900").Select
.range("A2:E900").Copy
End With

Je m'en sert pour copier ce qu'il y a sur un fichier excel vers un
autre fichier excel.

ce que j'aimerais, à la place de copier une plage A9 à E900 j'aimerais
copier que celle qui ont un contenu et si l'utilisateur en ajoute, la
plage s'agrandit.

comment faire ????

merci


Avatar
michdenis
Bonjoru boubou21,


Cette procédure copie toutes les données de la feuille source de ton classeur Temp.xls vers la cellule de destination A2
feuille "BD" de ton classeur ("07.04.03.test.xls
Copie : Format + Données


'----------------------------
Sub Copier()

Dim Rg As Range

'Déterminer dans une variable objet "Range" la plage source
Set Rg = Workbooks("Temp.xls").Worksheets("BDtemp").UsedRange
'Ouverture du fichier sur le serveur.
Workbooks.Open "C:TEMPTemp.xls"
'Copie des données classeur source vers classeur destination
Rg.Copy Workbooks("07.04.03.test.xls").Worksheets("BD").Range("A2")
'Fermeture du fichier sur le serveur
Workbooks("Temp.xls").Close
'Libérer la mémoire occupée par l'objet
Set Rg = Nothing

End Sub
'----------------------------


Salutations!


a écrit dans le message de news:
voici le bon code.


désolé pour le prob.


Private Sub Workbook_Open()

'Ouverture du fichier sur le serveur.
workbooks.Open "C:TEMPTemp.xls"

'Copie de la feuille sur le serveur
With workbooks("Temp.xls").Worksheets("BDtemp")
.Activate
.range("A2:E900").Select
.range("A2:E900").Copy

End With

'Activation du fichier de l'utilisateur
workbooks("07.04.03.test.xls").Worksheets("BD").Activate

'Copie des données du fichier serveur
ActiveSheet.Paste Destination:=Worksheets("BD").range("A2")

'Vider le presse-papier
Application.CutCopyMode = False

'Fermeture du fichier sur le serveur
workbooks("Temp.xls").Close
End Sub
Avatar
michdenis
Monsieur Boubou21,

Sub Copier()

Dim Rg As Range
Application.ScreenUpdating = False
Set Rg = Workbooks("07.04.03.test.xls").Worksheets("BD").Range("A2")
Workbooks.Open "C:TEMPTemp.xls"
With ActiveWorkbook
With .Worksheets("BDtemp").UsedRange
.Copy Rg
End With
End With
Workbooks("Temp.xls").Close False
Set Rg = Nothing

End Sub


Salutations!



a écrit dans le message de news:
"michdenis" wrote in message news:...
Bonjoru boubou21,


Cette procédure copie toutes les données de la feuille source de ton classeur Temp.xls vers la cellule de destination A2
feuille "BD" de ton classeur ("07.04.03.test.xls
Copie : Format + Données


'----------------------------
Sub Copier()

Dim Rg As Range

'Déterminer dans une variable objet "Range" la plage source
Set Rg = Workbooks("Temp.xls").Worksheets("BDtemp").UsedRange
'Ouverture du fichier sur le serveur.
Workbooks.Open "C:TEMPTemp.xls"
'Copie des données classeur source vers classeur destination
Rg.Copy Workbooks("07.04.03.test.xls").Worksheets("BD").Range("A2")
'Fermeture du fichier sur le serveur
Workbooks("Temp.xls").Close
'Libérer la mémoire occupée par l'objet
Set Rg = Nothing

End Sub
'----------------------------


Salutations!





Mich moi ça passe comme dans du beurre, j'Ai aucun résul avec ta manière.

moi ce que je veux, c'est qu'il s'ouvre dès que j'ouvre mon fichier excel. MErci

Avatar
boubou21
je copie bien ta formule dans thisworkgroup ?????????

si oui heu ça fonctionne pas vraiment de mon côté.


"michdenis" wrote in message news:...
Monsieur Boubou21,

Sub Copier()

Dim Rg As Range
Application.ScreenUpdating = False
Set Rg = Workbooks("07.04.03.test.xls").Worksheets("BD").Range("A2")
Workbooks.Open "C:TEMPTemp.xls"
With ActiveWorkbook
With .Worksheets("BDtemp").UsedRange
.Copy Rg
End With
End With
Workbooks("Temp.xls").Close False
Set Rg = Nothing

End Sub


Salutations!



a écrit dans le message de news:
"michdenis" wrote in message news:...
Bonjoru boubou21,


Cette procédure copie toutes les données de la feuille source de ton classeur Temp.xls vers la cellule de destination A2
feuille "BD" de ton classeur ("07.04.03.test.xls
Copie : Format + Données


'----------------------------
Sub Copier()

Dim Rg As Range

'Déterminer dans une variable objet "Range" la plage source
Set Rg = Workbooks("Temp.xls").Worksheets("BDtemp").UsedRange
'Ouverture du fichier sur le serveur.
Workbooks.Open "C:TEMPTemp.xls"
'Copie des données classeur source vers classeur destination
Rg.Copy Workbooks("07.04.03.test.xls").Worksheets("BD").Range("A2")
'Fermeture du fichier sur le serveur
Workbooks("Temp.xls").Close
'Libérer la mémoire occupée par l'objet
Set Rg = Nothing

End Sub
'----------------------------


Salutations!





Mich moi ça passe comme dans du beurre, j'Ai aucun résul avec ta manière.

moi ce que je veux, c'est qu'il s'ouvre dès que j'ouvre mon fichier excel. MErci