copie de groupe de cellule
Dernière réponse : dans Programmation
bonjour,
j'ai un petit problème lors de ma copie de cellule... en fait, cela ne copie pas... je ne comprend pas pourquoi.
voici mon code :
je m'explique : je nettoye d'abord les cellules dasn lesquel je vais copier (ligne 2)
les lignes 3 et 4 veulent faire la même chose, mais c'est pour vous montrez 2 méthodes que j'ai utilisé (et qui ne marche pas) : je veux copier le groupe de cellule A2:A6 de la page "selva" dans le groupe de cellule C4:C8 de la page TRG.
La seul opération qui marche est la première !!
j'ai un petit problème lors de ma copie de cellule... en fait, cela ne copie pas... je ne comprend pas pourquoi.
voici mon code :
Sub tableau_selva()
Sheets("TRG").Range("C4:D8").Clear
Sheets("TRG").Range("C4:C8") = Sheets("selva").Range("A2:A6")
Sheets("TRG").Range("D4") = Sheets("selva").Range("G2:G6")
End Sub
je m'explique : je nettoye d'abord les cellules dasn lesquel je vais copier (ligne 2)
les lignes 3 et 4 veulent faire la même chose, mais c'est pour vous montrez 2 méthodes que j'ai utilisé (et qui ne marche pas) : je veux copier le groupe de cellule A2:A6 de la page "selva" dans le groupe de cellule C4:C8 de la page TRG.
La seul opération qui marche est la première !!
Autres pages sur : copie groupe cellule
Lassé par la pub ? Créez un compte
bon, j'ai essayé une autre méthode, mais cela ne marche toujour pas, j'ai le message d'erreur "variable non definie", j'ai essayé en rajoutant Dim n as Value mais cela ne marche pas non plus et je ne trouve pas le type et comment l'ecrire...
J'ai essayé avec DefInt... mais pas concluant..
I need help !!
J'ai essayé avec DefInt... mais pas concluant..
I need help !!
Sub tableau_630()
n = 15 ' péridode
Dim acc As Worksheet
Dim mach As Worksheet
Set acc = Worksheets("TRG") ' feuille acceuil
Set mach = Worksheets("630t") ' feuille machine
Do While n <> 0
acc.Range("C" & n + 3) = mach.Range("A" & n + 1).Value ' copier la date
acc.Cells("D" & n + 3) = mach.Range("G" & n + 1).Value ' copie le TRG
acc.Cells("F" & n + 3) = mach.Range("H" & n + 1).Value ' copie le % de l'objectif
n = n - 1
Loop
End Sub
Peut on mettre à la place d'un ".Copie destination", un ".Paste spécial" ? Comme j'essaye de copier les valeurs de cellules (ces valeurs sont données par des formules), j'ai essayé de rajouter un .Value comme on l'avait déjà fait dans un autres programme. Mais ici, cela ne marche pas.
C'est aussi pour cela que j'avais proposé une autre possibilité (qui ne fonctionne pas non plus).
C'est aussi pour cela que j'avais proposé une autre possibilité (qui ne fonctionne pas non plus).
Faut que j'aille me coucher, moi. Et au réveil, je relis ce p****n de manuel. Peut-être qu'après, j'arrêtrais d'écrire des conneries.Désolé Eric. Evidemment, la méthode .Copy copie les formules. Pour m'en convaincre, RTFM.
Alors, pour copier juste les valeurs, tu peux passer par le presse-papier (COPY PASTESPECIAL CUTCOPYMODE
)Soit effectivement tu utilises .Value.
Exemples, pour une cellule :
Worksheets("Feuil1").Range("A1").Value = Worksheets("Feuil2").Range("B3).Value
Worksheets("Feuil1").Cells(1, 1).Value = Worksheets("Feuil2").Cells(3, 2).Value
Worksheets("Feuil1").Cells(1, 1).Value = Worksheets("Feuil2").Cells(3, 2).Value
Donc pour toute une plage, utilise deux boucles imbriquées :
Dim row As Integer, lig As Integer For col = 0 To 3 For lig = 0 To 7 MaFeuil_1.Range("C4" ).Offset(col, lig).Value = MaFeuil_2.Range("D6" ).Offset(col, lig).Value Next Next
La même :
Dim row As Integer, lig As Integer For col = 0 To 3 For lig = 0 To 7 MaFeuil_1.Cells(col + 4, lig + 3).Value = MaFeuil_2.Cells(col + 6, lig + 4).Value Next Next
bon, la suite....
j'essaye de copier un groupe de cellule, mais pas n'importe lequel, les 15 dernières !!
je suis allé sur le site : http://www.info-3000.com/vbvba/ecrituredeplacementcellu...
et j'ai pas tout compris !!
plus concretement :
voici une partie d'un code pris sur le site ci dessus, dans la partie "exercie bodure noir"
sur le site, le but est d'encadrer en noir un tableau (donc de colorier en noir les case autours)
Après recherche dans l'aide VBA, j'ai tj pas tout saisi...
alors maintenant, j'essaye de le traduire : et c'est la que j'aurais besoin de vos corrections !
1. Labase renvoie un nom de cellule (ex : B7)
2. Laplace renvoie un objet Range, donc renvoie a une cellule ....
3. renvoie des nombre entier
4. idem
5.
6.
7. active et selectionne une cellule = et alors??
8. renvoie le nombre de colonne
9. renvoie le nbr de ligne
10
11
12. laBase renvoie la cellule euh... ben cells(1,1) c'est A1, offset(-1,-1) on remonte et on recule d'1 ? la je saisi pas... a moins que la ligne 7 active la partie occuper du tableau et donc ici, on prend le coin supérieur gauche puis on se décale d'un .... c'est pi etre ça le truc!
13. pour ctr allant de 0 a Nbcolone+1
14. colorier en noir les cellules au dessus du tableau
15. et voila !
Bon, je demande juste quelques eclaisisements et je pense que je devrais m'en sortir... sur ce point la
Comme vous le voyez, je debute !
j'essaye de copier un groupe de cellule, mais pas n'importe lequel, les 15 dernières !!
je suis allé sur le site : http://www.info-3000.com/vbvba/ecrituredeplacementcellu...
et j'ai pas tout compris !!
plus concretement :
voici une partie d'un code pris sur le site ci dessus, dans la partie "exercie bodure noir"
sur le site, le but est d'encadrer en noir un tableau (donc de colorier en noir les case autours)
Dim LaBase As String
Dim LaPlace As Object
Dim NbLigne As Integer ' Nombre de lignes du tableau
Dim NbColonne As Integer ' Nombre de colonnes du tableau
' Initialisation des variables :
Set LaPlace = ActiveCell.CurrentRegion
NbColonne = LaPlace.Columns.Count
NbLigne = LaPlace.Rows.Count
' Bordure du HAUT :
LaBase = LaPlace.Cells(1, 1).Offset(-1, -1).Address
For Ctr = 0 To NbColonne + 1
Range(LaBase).Offset(0, Ctr).Interior.Color = RGB(0, 0, 0)
Next
Après recherche dans l'aide VBA, j'ai tj pas tout saisi...
alors maintenant, j'essaye de le traduire : et c'est la que j'aurais besoin de vos corrections !
1. Labase renvoie un nom de cellule (ex : B7)
2. Laplace renvoie un objet Range, donc renvoie a une cellule ....
3. renvoie des nombre entier
4. idem
5.
6.
7. active et selectionne une cellule = et alors??
8. renvoie le nombre de colonne
9. renvoie le nbr de ligne
10
11
12. laBase renvoie la cellule euh... ben cells(1,1) c'est A1, offset(-1,-1) on remonte et on recule d'1 ? la je saisi pas... a moins que la ligne 7 active la partie occuper du tableau et donc ici, on prend le coin supérieur gauche puis on se décale d'un .... c'est pi etre ça le truc!
13. pour ctr allant de 0 a Nbcolone+1
14. colorier en noir les cellules au dessus du tableau
15. et voila !
Bon, je demande juste quelques eclaisisements et je pense que je devrais m'en sortir... sur ce point la
Comme vous le voyez, je debute !
Je n'ai pas trop vocation à commenter le code d'un autre site....
Enfin bon.
2. LaPlace doit contenir une plage de cellules donc devrait être de type Range
Où est la définition de LaBase ? Il faut mettre l'option Explicit. (Ultimatum: Sinon je ne réponds plus aux questions
)
7. Non. ActiveCell n'active pas une cellule mais référence la cellule active. On aurait dit "ActivateCell" sinon.
En fait en VBA/Excel, on utilise la méthode .Select pour activer une cellule. .CurrentRegion désigne les cellules contiguës et non-vides. Donc LaPlace contient la zone de cellules remplies autour de la cellule active.
8. ... de la zone de cellules remplies autour de la cellule active.
9. ... de la zone de cellules remplies autour de la cellule active.
10. Ben non. Cells(1, 1), sans rien préciser, c'est la première cellule de la feuille, donc A1, mais si on précise une zone, c'est la première cellule de la zone. RTFM à la page Cells.
Il me semble qu'il y a un exemple en image sur le site pré-cité.
Enfin bon.
2. LaPlace doit contenir une plage de cellules donc devrait être de type Range
Où est la définition de LaBase ? Il faut mettre l'option Explicit. (Ultimatum: Sinon je ne réponds plus aux questions
)7. Non. ActiveCell n'active pas une cellule mais référence la cellule active. On aurait dit "ActivateCell" sinon.
En fait en VBA/Excel, on utilise la méthode .Select pour activer une cellule. .CurrentRegion désigne les cellules contiguës et non-vides. Donc LaPlace contient la zone de cellules remplies autour de la cellule active.8. ... de la zone de cellules remplies autour de la cellule active.
9. ... de la zone de cellules remplies autour de la cellule active.
10. Ben non. Cells(1, 1), sans rien préciser, c'est la première cellule de la feuille, donc A1, mais si on précise une zone, c'est la première cellule de la zone. RTFM à la page Cells.
Il me semble qu'il y a un exemple en image sur le site pré-cité.
J'ai essayé de reprendre pour moi le code.
Comme mon but est re copier les 15 dernières cellules d'une liste (ou colonne)
voici ce que j'ai essayé :
Comme vous vous en doutez, cela ne marche pas ! Mais, moi, ce n'est pas evident pour moi... Je sais au moins que l'erreur est dans les lignes 7,8,10.
pourriez vous m'orienter ?
Comme mon but est re copier les 15 dernières cellules d'une liste (ou colonne)
voici ce que j'ai essayé :
Sub prg_copie()
Dim lig As Integer
Dim bas As String
Dim Laplace As Object
Dim Nbligne As Integer
Set Laplace = ActiveCell.CurrentRegion
Nbligne = Laplace.Rows.Count
bas = Laplace.Cells(Nbligne, 1).Offset(0,0).Address
For lig = 0 To 15
' copie les 15 dernière date de la colonne B de la feuille mandelli
Sheets("TRG").Range("C4").Offset(lig, 0).Value = Sheets("mandelli").Range(bas).Offset(-lig, 2).Value
Next
End Sub
Comme vous vous en doutez, cela ne marche pas ! Mais, moi, ce n'est pas evident pour moi... Je sais au moins que l'erreur est dans les lignes 7,8,10.
pourriez vous m'orienter ?
Ligne 10, tu veux bien me dire pourquoi tu utilises Offset ?
Essaye de comprendre ce que tu fais !
Moyens :
Réflexion,
Aide de VBA/Excel,
PrésencePC.
Dans l'ordre !!!!!!!
Bon, faisons les choses simplement. On veut allez de A vers B : Décrire A et B. (Coordonnées, quantités min/max)
Essaye de comprendre ce que tu fais !
Moyens :
Dans l'ordre !!!!!!!
Citation :
mon but est re copier les 15 dernières cellules d'une liste (ou colonne)
escuse si je ne suis pas clair.
donc, j'ai un tableau ou je repertorie des informations numeriques journalières.
je voudrais prendre les informations des 15 derniers jours et les envoyer dans un autre tableau (autres onglets) de synthèse.
pour envoyer l'information de la date : je la prends dans le tableau "mandelli" dans la colonne B pour l'envoyer dans l'onglet "TRG" colonne C, ligne 4 et suivantes.
je recommencerais alors l'operation pour les autres informations à transporter.
donc, j'ai un tableau ou je repertorie des informations numeriques journalières.
je voudrais prendre les informations des 15 derniers jours et les envoyer dans un autre tableau (autres onglets) de synthèse.
pour envoyer l'information de la date : je la prends dans le tableau "mandelli" dans la colonne B pour l'envoyer dans l'onglet "TRG" colonne C, ligne 4 et suivantes.
je recommencerais alors l'operation pour les autres informations à transporter.
Citation :
j'ai un tableau ou je repertorie des informations numeriques journalières.je voudrais prendre les informations des 15 derniers jours et les envoyer dans un autre tableau (autres onglets) de synthèse.
pour envoyer l'information de la date : je la prends dans le tableau "mandelli" dans la colonne B pour l'envoyer dans l'onglet "TRG" colonne C, ligne 4 et suivantes.
Ben voilà ! On a presque tout.
Maintenant quelques précisions :
Citation :
Tu parles des n dernières infos. Connaîtons la place de la dernière (ou la première) ?Je parlais des n dernière infos.
SI on connait ? euh... dans un sens oui, c'est a dire que si on connait la date du jour, je peut dire ou est l'information...j'avais pas pensé à cela... (on met dans une cellule =AUJOURDHUI()) quoique la mise à jour des info est souvent décalé de une journée. Comme j'ai mon relevé depuis le 3sept... A2 = septembre; le seul inconvénient, c'est que les semaines sont de 5 jours avec de temps en temps le samedi en plus...
Je prefere quand même prendre les n dernières informations
Citation :
Et pour gérer les effets de bord, si le tableau "mandelli" fait moins de 15 lignes, que fait-on ?en theorie, j'ai toujours plus de 15 lignes ! Pour le mandelli, pas de probleme... pour les autres onglets.. disons pas de probleme... au pire, dans 10 jours sur, j'ai plus de 15 lignes partout ! Donc pour 10 jours, je ferais "à la main" !! (je veux dire sans programme)
Sinon, je pense qu'avec une if then endif, on devrais pouvoir cerner le probleme ?
Bon. Puisque tu n'as pas compris les questions, c'est qu'elles étaient mal posées....
Les données à copier sont dans la colonne X. On prend les quinze dernières. Il n'y a donc pas de fioritures, pas de titre, de résumé, pas de trous (cellules vides) dans cette colonnes ? Ok.
NON. Tu es en train de générer des bugs exprès. Tu as fais des maths niveau terminale ? La première chose à faire lors d'une étude de fonction, c'est déterminer le domaine de la fonction. Pourquoi t'avoir farci la tête de conneries dans le genre ? Pour que tu les applique dans d'autres domaines. Je réponds à ta place : Si j'en ai au moins 15, je prends les quinze derniers, sinon, j'en prends autant qu'il y en a. Ou encore, s'il n'y en à pas quinze, j'annule la procédure.
Les données à copier sont dans la colonne X. On prend les quinze dernières. Il n'y a donc pas de fioritures, pas de titre, de résumé, pas de trous (cellules vides) dans cette colonnes ? Ok.
je ferais "à la main"
NON. Tu es en train de générer des bugs exprès. Tu as fais des maths niveau terminale ? La première chose à faire lors d'une étude de fonction, c'est déterminer le domaine de la fonction. Pourquoi t'avoir farci la tête de conneries dans le genre ? Pour que tu les applique dans d'autres domaines. Je réponds à ta place : Si j'en ai au moins 15, je prends les quinze derniers, sinon, j'en prends autant qu'il y en a. Ou encore, s'il n'y en à pas quinze, j'annule la procédure.
1°) Déterminer la première cellule de destination.
2°) Déterminer la dernière cellule source.
3°) Vérifier que cette cellule est au moins sur la quinzième ligne.
4°) Remonter de quinze lignes. Là est la première cellule à copier.
5°) Copier cette cellule source dans la destination.
6°) Descendre d'une ligne la destination.
7°) Descendre d'une ligne la source.
8°) Recommencer 15 fois les étapes 5°, 6° et 7°
Et voilà !
Evidemment, si tu as plus de colonnes à trairer en même temps, utilise la variante 2 et multiplie les décalages (offsets) par rapport à dest et srce.
2°) Déterminer la dernière cellule source.
3°) Vérifier que cette cellule est au moins sur la quinzième ligne.
4°) Remonter de quinze lignes. Là est la première cellule à copier.
5°) Copier cette cellule source dans la destination.
6°) Descendre d'une ligne la destination.
7°) Descendre d'une ligne la source.
8°) Recommencer 15 fois les étapes 5°, 6° et 7°
Dim dest As Range 'Destination Dim srce As Range 'Source Dim nbre As Integer 'Nombre d'itérations Dim i As Integer ' // TRG!C4 Set dest = Worksheets("TRG").Range("C4") ' // mandelli!B1 et on descend jusqu'à la dernière. Set srce = Worksheets("mandelli").Range("B1").End(xlDown) If srce.Row > 15 Then nbre = 15 Else MsgBox "Attention malheureux, il y a moins de 15 lignes là !!!!" nbre = srce.Row End If ' // On remonde de 14 lignes Set srce = srce.Offset(-(nbre - 1), 0) ' // Variante 1 For i = 1 To nbre dest.Value = srce.Value Set dest = dest.Offset(1, 0) Set srce = srce.Offset(1, 0) Next ' // Variante 2 For i = 0 To nbre - 1 dest.Offset(i, 0).Value = srce.Offset(i, 0).Value Next
Et voilà !
Evidemment, si tu as plus de colonnes à trairer en même temps, utilise la variante 2 et multiplie les décalages (offsets) par rapport à dest et srce.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumMacro copie de cellule
- ForumCopie cellule autre feuille
- ForumCopie ligne si cellule
- ForumCopie cellule avec condition
- ForumCopie groupe de cellules excel 2007 vb
- ForumExcel copie cellule sous condition
- ForumExcel macro copie cellule
- ForumExcel copie cellule autre feuille
- ForumExcel copie cellule vide
- ForumUne copie
- Voir plus