IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Coller sur la ligne préc en fct d'1 valeur


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [VBA-E]Coller sur la ligne préc en fct d'1 valeur
    Bonjour,

    je ne suis pas développeur, et j'ai eu beau consulter la FAQ et parcourir le forum, je n'arrive pas à comprendre la totalité du code des exemples proposés.

    Je voudrais faire une macro qui permettrait, à chaque fois que la valeur de la cellule située dans la colonne C est 2005, de copier la plage D:O de la même ligne et de faire un collage spécial valeur sur la même plage (D:O), mais de la ligne précédente.

    Je suis conscient qu'aider un "non développeur" comme moi, n'est pas la fonction première de ce forum, mais comme je dois faire cette manip manuellement pour environ 400 fichiers contenant pour certain une centaine de ligne, je suis desespéré à l'idée de ce travail harassant et quelque peu répétitif. C'est pourquoi, je cherche une ame charitable qui aurait pitié d'un pauvre type comme moi, égaré dans les méandres de la nébuleuse VisualBasic .

    Voila, désolé de vous embéter

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Salut mimo13,

    Veux-tu faire ton traitement a chaque fois qu'une cellule de la colonne est renseignée ou parcourir la colonne et faire le traitement dés qu'une cellule contient 2005 ?

    @+

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Comme le "dodo" m'appelle je n'attends pas ta reponse.

    Teste ceci : c'est le deuxieme cas :
    Evenement Worksheet_Change de la feuille ou sont tes cellules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    'test si la cellule qui a changé est dans la colonne C
    If Target.Column <> 3 Then Exit Sub
     
    'Selection de la plage D:O à coté
    Set cc = Target
    cc.Offset(0, 1).Resize(1, 12).Select
     
    Selection.Copy
     
    'selection plage D:O au dessus
    cc.Offset(-1, 1).Resize(1, 12).Select
     
    'Collage special
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Application.CutCopyMode = False
    End Sub
    @+

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Wahou quelle rapidité !! Je n'espérais pas une réponse avant demain. Bon je regarde ma montre et on est déjà demain.

    Merci beaucoup Bouley. Je testerai ça demain au boulot car je n'ai pas les documents chez moi.
    Ceci dit, une chose m'intrigue : Je ne vois pas 2005 dans le code. Est-ce que je dois remplacer qq chose par 2005 ?

    Bon le dodo m'appelle aussi !

    Encore

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Et voici un code qui cherche la valeur 2005 dans la colonne C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CopieLigne()
      Dim rRange As Range
      Dim rCell As Range
      Set rRange = Range([C1], Cells(Cells.SpecialCells(xlLastCell).Row, 3))
      For Each rCell In rRange
        If rCell = 2005 Then
          Range(rCell.Offset(0, 1), rCell.Offset(0, 12)).Copy
          rCell.Offset(-1, 1).PasteSpecial Paste:=xlValues
        End If
      Next rCell
      Application.CutCopyMode = False
    End Sub
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Autre syntaxe pour la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Range(rCell.Offset(0, 1), rCell.Offset(0, 12)).Copy
    en plus court (merci bouley):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          rCell.Offset(0, 1).Resize(1, 12).Copy
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Bon jour,

    OOPS, il fallait que j'aille dormir !!
    Code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Worksheet_Change(ByVal Target As Range) 
     
    'test si la cellule qui a changé est dans la colonne C 
    If Target.Column <> 3 Then Exit Sub 
    If Target=2005 then
       'Selection de la plage D:O à coté 
       Set cc = Target 
       cc.Offset(0, 1).Resize(1, 12).Select 
     
       Selection.Copy 
     
       'selection plage D:O au dessus 
       cc.Offset(-1, 1).Resize(1, 12).Select 
     
       'Collage special 
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,     SkipBlanks _ 
            :=False, Transpose:=False 
     
       Application.CutCopyMode = False 
    end if
       End Sub
    Merci Alain pour la selection
    @+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Vraiment je tiens à tous vous remercier pour votre aide.

    Bouley, j'ai d'abord essayé ton code, mais il m'a mis un message : " Erreur d'execution 424 Objet requis " le curseur de debogage s'est positionné devant : If Target=2005 then. Du coup j'ai essayé celle d'AlainTech qui fonctionne parfaitement.

    Donc un grand merci à vous 2, grace à vous, aujourd'hui la vie est belle !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Excel-VBA : Formule longue sur plusieurs lignes erreur fin d'instruction
    Par Pauline1374 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/03/2014, 17h46
  2. Coller sur premire ligne libre d'un tableau
    Par franc83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2012, 21h35
  3. Réponses: 1
    Dernier message: 06/10/2008, 09h53
  4. [VBA-E] copier /coller sur test cellule
    Par Portsall dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2006, 22h19
  5. [VBA-E]test sur le contenu de toute une ligne
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/02/2006, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo