![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2006
Messages: 3
|
Bonjour
voiçi mon problème de débutant. j'ai une feuille1 dans laquelle je rentre une valeur en C1. Afin de conserver toutes les valeurs que je rentre en C1,je veux avec une macro, copier la valeur C1 vers une feuille 2 dans la première cellule vide de la colonne A. voici le code mais j'ai une erreur sur la ligne range("A1")...... Range("C1").Select Selection.Copy Sheets("Feuil2").Select Range("A1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste merci d'avance |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Localisation: Bayonne
Version Excel : Excel 2003 (PC)
Messages: 1 202
|
Bonjour,
Voici le même résultat en 1 ligne : Code:
Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0) = Sheets("Feuil1").Range("C1").Value
|
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Sète
Version Excel : Excel 2003 (PC)
Messages: 2 810
|
Bonjour werjkslfs, Sergio, bonjour le forum,
La réponse de Sergio étant excellente je me permets d'intervenir juste pour t'expliquer l'erreur dans la ligne de ton code. Range("A1").End(xlDown).Offset(0,1).Select signifie : - tu pars de A1 - Tu sélectionnes la première cellule éditée (comme la colonne est vide cela t'envoie jusqu'en A65536). - Tu demandes à excel de sélectionner la cellule inférieure. Soit A65537 et là ça plante puisque tu dépasses la limite imposée par le logiciel. C'est pour cela que Sergio a préféré faire le contraire. Partir de A65536 et remonter à la première cellule éditié puis redescendre d'une. L'inconvénient de cette méthode et que, si la colonne A est vide la première valeur est toujours placée en A2 et non pas en A1... Il est vrai que souvent A1 contient une étiquette (une désignation) mais au pire tu peux résoudre avec une boucle If... Then. Pour terminer, le code de Sergio ne copie que la valeur inscrite en C1. Si il te faut copier aussi le format je te propose le code suivant : Code:
Sub Macro1()
Dim dest As Range 'déclare la variable dest
'définit la variable dest
With Sheets("Feuil2")
If .Range("A1").Value = "" Then 'A1 si A1 est vide
Set dest = .Range("A1")
Else 'sinon la première cellule vide de la colonne A
Set dest = .Range("A65536").End(xlUp).Offset(1, 0)
End If
End With
'copie et colle la cellule C1 dans la colonne A de l'onglet "Feuil2"
Sheets("Feuil1").Range("C1").Copy Destination:=dest
End Sub
|
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: mars 2008
Messages: 12
|
Bonjour à tous
j'ai besoin d'aide au niveau d'une macro dont je me sers et qui était déjà existante. Sub solder_actions() ' Macro enregistrée le 04/01/2006 par Aurélien DALLE Dim i As Integer Dim konteur As Integer Dim NBsold As Integer 'debut du programme NBsold = 4 'comptage des cellules dans l'onglet "soldées" ActiveWorkbook.Worksheets("soldées ").Activate For konteur = 4 To 4000 If Range(Cells(konteur, 1), Cells(konteur, 1)) <> "" Or Range(Cells(konteur, 2), Cells(konteur, 2)) <> "" Then NBsold = NBsold + 1 End If Next konteur ' detection et copie des actions soldées ActiveWorkbook.Worksheets("en_cours").Activate For i = 4 To 1000 If Range(Cells(i, 10), Cells(i, 10)) = "Soldée" Then Range(Cells(i, 1), Cells(i, 13)).Copy ActiveWorkbook.Worksheets("soldées ").Cells(NBsold, 1) 'suppression de la ligne ActiveWorkbook.Worksheets("en_cours").Activate Range(Cells(i, 1), Cells(i, 15)).Select Selection.Delete Shift:=xlUp NBsold = NBsold + 1 'on reste sur la même ligne i = i - 1 Cells(i, 1).Activate Else End If Next i ActiveWorkbook.Worksheets("en_cours").Activate End Sub Cette macro me permet de copier donc une ligne complète de l'onglet en_cours, la supprime puis la colle dans l'onglet "soldées". Mon problème est que dans l'onglet "en_cours", une formule se trouve dans la colonne 11 qui effectue une différence entre une date de la colonne 8 et la date du jour qui se trouve dans la case B1. Est-il possible de copier la valeur de cette différence et non la formule Merci ![]() |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Accro
Date d'inscription: octobre 2005
Localisation: Bayonne
Version Excel : Excel 2003 (PC)
Messages: 1 202
|
Bonjour,
rajoute cette ligne : Code:
Worksheets("soldées ").Cells(NBsold, 11) = Cells(i, 11).Value
Code:
Range(Cells(i, 1), Cells(i, 13)).Copy ActiveWorkbook.Worksheets("soldées ").Cells(NBsold, 1)
|
|
|
|
![]() |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| premiere cellule vide | Ole | Forum Excel | 2 | 03/05/2006 19h27 |
| Première cellule non vide | Alex | Forum Excel | 2 | 05/08/2005 21h25 |
| recherche la premiere cellule vide dans une colonne | Yann | Forum Excel Downloads - Archives | 2 | 31/01/2005 21h34 |
| Première cellule vide dans colonne filtrée | mico | Forum Excel Downloads - Archives | 2 | 08/01/2005 10h47 |
| comment ajouter l'heure courante dans la première cellule vide d'une ligne | fred | Forum Excel Downloads - Archives | 2 | 28/08/2003 15h42 |