[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.

4 réponses

  1. 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
  2. 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
  3. 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
  4. 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