Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2012, 10h24   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 4
Points : 4
Par défaut Macro copie colonne la plus à droite avec des données pour recopier la formule dans la colonne suivante

Bonjour à tous,

Je cherche à faire une macro (très simple) qui me recopie les formules d'une colonne dans la colonne d'à côté afin d'incrémenter pour chaque jour (un jour par colonne) mes résultats.

J'ai réalisé une macro par enregistrement qui fonctionne correctement à un bémol près, la macro copie systématiquement les formules de la même colonne vers la colonne de droite alors que je voudrais que la macro copie la colonne la plus à droite qui contient une formule/valeur afin de recopier les formules dans la colonne suivante.

J'espère avoir été suffisamment clair.

Merci d'avance pour vos contributions.

Cordialement

Stueur666
stueur666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 11h56   #2
Membre actif
 
Homme
Inscription : juillet 2002
Messages : 108
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juillet 2002
Messages : 108
Points : 153
Points : 153
Bonjour,

Le code :

Code :
Range("a1").End(xlToRight).Column
te retournera le numéro de colonne de la dernière cellule non vide en partant de A1 vers la droite.

Ca te permettra d'adapter ton code avec des :

Code :
Cells(1,Range("a1").End(xlToRight).Column +1)
par exemple
aereno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 11h58   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Bonjour,

Essaie :

Code :
1
2
3
4
5
6
Sub test2()
    Dim Col As Integer
    Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    Columns(Col).Copy
    Columns(Col + 1).PasteSpecial xlPasteFormulas
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 15h17   #4
Invité de passage
 
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 4
Points : 4
Bonjour et merci,

J'avoue ne pas très bien comprendre vos explication...

voici ma macro actuelle (produite par enregistrelment) :

Sub Macro1()
'
' Macro1 Macro

Range("C4").Select
ActiveCell.FormulaR1C1 = "=RC[-1]+1"
Range("B5:B18").Select
Selection.Copy
Range("C5").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("B4:B18").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


Et le fichier que je veux modifier est en fichier joint.

Merci d'avance pour votre aide
Fichiers attachés
Type de fichier : xlsx Test.xlsx (10,2 Ko, 4 affichages)
stueur666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h58   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Ou je me trompe, ou tu recopies les valeurs, pas les formules :

Code :
1
2
3
4
5
6
7
Sub test2()
    Dim Col As Integer
    Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    Range(Cells(5, Col), Cells(5, Col).End(xlDown)).Copy
    Cells(5, Col + 1).PasteSpecial xlPasteValues
    Cells(4, Col + 1) = Cells(4, Col) + 1
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 09h43   #6
Invité de passage
 
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 4
Points : 4
Merci beaucoup Daniel.C

Cela fonctionne parfaitement!

Je clos le sujet

Cordialement

Stueur
stueur666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h09   #7
Invité de passage
 
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 4
Points : 4
Bonjour à tous,

Après de multiples vérification il s'avère que la macro ne fonctionne pas comme je le souhaite.

En effet, je souhaite copier la première colonne (celle contenant les formules) puis faire une copier coller(formules) sur la colonne la plus à droite, puis copier/coller(valeur) ma colonne la plus à droite.

Merci d'avance pour l'aide que vous pourrez m'apporter.

Cordialement

Stueur
stueur666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 18h23   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Bonjour,

Après de multiples vérification il s'avère que ton énoncé ne correspond pas à l'énoncé initial.
Citation:
puis faire une copier coller(formules) sur la colonne la plus à droite, puis copier/coller(valeur)
Pourquoi ne pas faire directement et collage spécial Valeurs ? Qu'appelles-tu "première colonne" la colonne A ? Peux-tu donner un exemple ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 10h06   #9
Invité de passage
 
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 4
Points : 4
Bonjour Daniel.C, bonjour aux autres aussi,

Désolé de ne pas avoir été suffisamment clair dans mon énoncé.
J'ai remis le fichier avec des explications plus détailler de ce que je souhaite.

Merci d'avance pour l'aide que vous pourrez m'apporter

Cordialement

Stueur
Fichiers attachés
Type de fichier : xls Test Suivi retour SAV FYE2012.xls (1,98 Mo, 2 affichages)
stueur666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 13h47   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 035
Points : 4 035
Attache la macro suivante à ton bouton, sachant que les lignes 15-19 ne sont pas traitées :

Code :
1
2
3
4
5
6
7
8
9
10
11
Sub test2()
    Dim Col As Integer
    Application.ScreenUpdating = False
    Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column + 1
    Range(Cells(5, 2), Cells(13, 2)).Copy
    Cells(5, Col).PasteSpecial xlPasteFormulas
    Range(Cells(5, Col), Cells(13, Col)).Copy
    Cells(5, Col).PasteSpecial xlPasteValues
    Cells(4, Col) = Cells(4, Col - 1) + 1
    Application.ScreenUpdating = False
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h08   #11
Invité de passage
 
Inscription : novembre 2011
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 22
Points : 4
Points : 4
Merci Daniel.C!

Ca a l'air de fonctionner correctement!

Je clos le sujet.

Merci encore!

Cordialement

Stueur
stueur666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h24.


 
 
 
 
Partenaires

Hébergement Web