[EXCEL] Colonne suivante...

Hugar -  
 hugar -
Bonjour à tous,
voilà, je suis en train de progammer un tableau sur Excel 2010, et je suis confronté à un problème... Je suis en train de créer un outil qui donne plusieurs valeurs en fonction de critères à sélectionner ; et je dois créer un bouton qui enregistre les données actuellement affichées dans une liste sur sur autre feuille (pour les archiver et les comparer). J'ai donc créé un bouton qui appelle une macro qui se charge de faire les copier/collage spéciale (valeur seule), donc tout marche bien, sauf....
Sauf que j'aimerais qu'à chaque appuie du bouton, excel enregistre les nouvelles valeurs dans la colonne suivante (histoire de pas écraser les valeurs à chaque fois !!)
Donc voici un extrait de la macro (c'est toujours la même chose) :

Range("C1").Select 
    ActiveCell.FormulaR1C1 = "=NOW()" 
    Range("C2").Select 
    Sheets("daten").Select 
    Range("B23").Select 
    Selection.Copy 
    Sheets("List").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
    Range("C3").Select 
    Sheets("daten").Select 
    Range("C23").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("List").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
        :=False, Transpose:=False 
    Range("C4").Select


L'idée serait de remplacer sur la sheet "List" les "C1", "C2", etc. par "D1", "D2"... puis "E1", "E2", etc....
J'ai essayer plusieurs solutions d'internet mais rien n'a marché, et vu que je ne comprends rien au VBA (et puis j'ai pas trop le temps d'apprendre, c'est pour le boulot là ^^)...
Merci beaucoup de votre aide en tout cas !

Hug.

A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour,

Ça devrait ressembler à cela :

Option Explicit 

Sub Test() 

    Dim Boucle As Long 

    Sheets("List").Select 
    Range("C1").Select 
    ActiveCell.FormulaR1C1 = "=NOW()" 
    Range("C2").Select 
     
    For Boucle = 2 To 50 
        Sheets("daten").Select 
        Cells(Boucle, 23).Select 
        Selection.Copy 
        Sheets("List").Select 
        Selection.PasteSpecial Paste:=xlPasteValues, _ 
            Operation:=xlNone, SkipBlanks _ 
            :=False, Transpose:=False 
        Application.CutCopyMode = False 
        ActiveCell.Offset(1, 0).Select 
    Next Boucle 
     
End Sub 
'  


bien entendu, ne voyant pas les données, je ne connais
pas le nombre de colonne à traiter ?

For Boucle = 2 To 50

De la colonne 2 (B) à la colonne 50 (AX).

Cdt

Lupin
0
Hugar
 
Merci beaucoup pour votre réponse.
Alors, j'ai essayé votre solution (en adaptant, car c'est dans la feuille "List" que je veux changer de colonne à chaque fois !), résultat :
- La liste s'écrit bien, mais en ligne et non en colonne (une colonne = un archivage des données, puis quand on clique à nouveau sur le bouton, et refait un archivage sur la colonne de droite, etc.. Et non sur la ligne, puis la ligne de dessous.) Au pire, je peux inverser et présenter ma liste par ligne...
- La macro tourne.... 50 fois ! Elle ne s'arrête pas à la fin de l'écriture d'une colonne (enfin, ici en l'occurence : d'une ligne). 'Donc ca écrit 50 fois la même ligne :s

Merci beaucoup de votre aide, on va y arriver !
0
Utilisateur anonyme
 
re:

désolé je me suis trompé, il faut juste inverser lignes et colonnes
dans l'instruction suivante :

Cells(Boucle, 23).Select
devient :
Cells(23, Boucle).Select

donc on obtient :

<code>
Sub Test()

Dim Boucle As Long

Sheets("List").Select
Range("C1").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Range("C2").Select

For Boucle = 2 To 50
Sheets("daten").Select
Cells(23, Boucle).Select
Selection.Copy
Sheets("List").Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Select
Next Boucle

End Sub
'
<code>

deuxième point, jusqu'où doit tu effectuer la manip ?

Je cite :
L'idée serait de remplacer sur la sheet "List" les "C1", "C2", etc. par "D1", "D2"... puis "E1", "E2", etc....

le mot [etc...] signifie quoi exactement ?

En C1, tu inscris la date de maintenant (la formule),

en C2, tu commence la copie,

veux-tu toujours inscrire la date du jour sur la ligne 1
de chaque colonne, et renvoyé la copie sur la ligne 2
en décalant d'une colonne à chaque fois ?

Je ne saisis pas bien cette partie, c'est pourquoi j'ai fait
boucler de 2 à 50, mais cela n'a pas l'air d'être ce que tu
souhaite !

Cdt

Lupin
0
hugar
 
Bonjour,
merci beaucoup,
en adaptant vos codes, j'ai réussi à obtenir ce que je voulais ! J'ai même pu mettre en place un système de suppression de colonne qui fait revenir à la colonne précédente pour écrire (et ne laisse donc pas de blancs)...
Maintenant je dois trouver un système pour commander une impression en sélectionnant l'année d'archivage des données, mais ça... c'est une autre histoire....!
0