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 :

macro marche sur 4 cellules mais comment faire pour des colonnes entières ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut macro marche sur 4 cellules mais comment faire pour des colonnes entières ?
    Voila en fait j'ai une macro qui est un peu galère a expliqué mais je vous explique...
    Dans la colonne A j'ai un commentaire ancien, dans la colonne B un commentaire nouveau, et dans la colonne C une concaténation du commentaire nouveau, de la date (mise dans une autre cellule pour mieux concaténer) et du commentaire ancien.
    Donc la j'ai réussi très bien pour 4 cellules...
    Seulement je voudrais que ça le fasse sur toute la colonne...
    Le but étant que dans la colonne B je rajoute un commentaire nouveau, que celui ci se concatène avec la date de modif et le commentaire ancien, et qu'ensuite s'efface la colonne A.

    Vu que ça marche sur 4 cellules je vous montre ce que j'ai fais..Je pense pas que ce soit dur de faire ça tout le long de la colonne, le truc c'est que je reprends le boulot today et je suis un peu lol

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]&"" ""&TEXT(R[1]C[7],""jj/mm/AA"")&"" ""&RC[-3]"
    Range("D1").Select
    Selection.Copy
    Range("C1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("D1").Select
        Application.CutCopyMode = False
        Selection.ClearContents
     
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    - tu recherche la dernière ligne de ta colonne où recopier,
    - tu mets ta formule dans D1 (ton code)
    puis
    - tu recopies la cellule D1 sur la plage comme indiqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("D1").AutoFill Destination:=Range("D2:D" & DernièreLigne), Type:=xlFillDefault
    A+

  3. #3
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    pas bête ton histoire, j'y pensais presque :p sauf que il me met erreur de syntaxe et me fait quand même la macro mais il m'efface pas la colonne C (j'ai un peu modifié ta macro) mais je comprends pas pourquoi le message d'erreur...tu vois toi ? je te rappelle mon nouveau code

    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
     
    Sub formule()
     
    Dim DernièreLigne
    DernièreLigne = IF565
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]&"" ""&TEXT(R[1]C[7],""jj/mm/AA"")&"" ""&RC[-3]"
     
    Range("C1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Range("D1").AutoFill Destination:=Range("D2:D565" & DernièreLigne), Type:=xlFillDefault
        Range("C1").Select
        Application.CutCopyMode = False
        Selection.ClearContents
     
    End Sub

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Rien ne te choque dans ce code ?

    Citation Envoyé par melodyyy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ../..
    DernièreLigne = IF565
    ../..
    Range("D1").AutoFill Destination:=Range("D2:D565" & DernièreLigne), ../..
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    je savais que je dormais aujourd'hui...je réssais et sur toute la ligne

  6. #6
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    nan il me refait la même chose j'ai modifié un tout petit peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Range("C1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Range("D1").AutoFill Destination:=Range("D1:DernièreLigne"), Type:=xlFillDefault

  7. #7
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    De plus ça marche pour une ligne mais pas sur les autres lignes...
    Si je vais sur A2 je met un com, B2 je met un com, il me concatène pas la date et les 2 com comme au dessus...

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ben voui !
    Un coup tu lui mets que DernièreLigne = IF565 alors que je parle de D565, nécessairement, après...
    Ensuite tu mets DernièreLigne = IF565 alors que je parle d'un N° de ligne et non pas de l'adresse d'une cellule, donc, 565 tout court...
    Enfin tu mets Range("D2565" & DernièreLigne) alors que tu désignes déjà la dernière ligne dans D565
    M'étonne pas que ton pataquès génère une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D1").AutoFill Destination:=Range("D2:D" & DernièreLigne), Type:=xlFillDefault
    Y me semble pourtant que c'est bien ce que j'avais mis. Faut réfléchir avant de mettre des erreurs dans un code qu'en n'a pas

    Allez, raconte !

  9. #9
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    ouai mais nan parce que moi je veux juste pouvoir concaténer mes comm jusqu'a la ligne 565, la je met ça ça me génère une erreur quand même:

    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
     
    Sub formule()
     
    Dim DernièreLigne
    DernièreLigne = 565
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]&"" ""&TEXT(R[1]C[7],""jj/mm/AA"")&"" ""&RC[-3]"
    Range("C1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Range("D1").AutoFill Destination:=Range(("D2:D564" & DernièreLigne), Type:=xlFillDefault
        Range("C1").Select
        Application.CutCopyMode = False
        Selection.ClearContents
     
    End Sub
    Dit moi ce que toi tu mettrais, parce que la je vois pas du tout du tout

  10. #10
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    euh sans la 2ème parenthèse pardon c'est moi

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu donnes à DernièreLigne la valeur 565, et si tu mets LE CODE QUE JE T'AI PASSÉ sans le modifier, qu'est-ce qu'il se passe ?

  12. #12
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    pareil une erreur 1004: erreur définit par l'application ou par l'objet...

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Sur quelle ligne ?

  14. #14
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    Pour info ça bloque entre ma 1ere selection de ma cellule D1 et ma concaténation de date

  15. #15
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    Désolé de faire pleins de messages...je voulais préciser..
    ça bloque entre la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("D1").Select
    et la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveCell.FormulaR1C1 = "=RC[-2]&"" ""&TEXT(R[1]C[7],""jj/mm/AA"")&"" ""&RC[-3]"

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    A quoi te sert cette ligne
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    puisque tu ne copies rien. Avant de coller, y faut copier

  17. #17
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    Admettons, c'est pas faux à la base elle me servait...Fin l'erreur est toujours la... elle a changé
    elle est entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("D1").AutoFill Destination:=Range("D2:D" & DernièreLigne), Type:=xlFillDefault
    et la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("C1").Select

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu as un bug sur une ligne de code, cette ligne est mise en évidence. Là je ne comprends pas, ta formule est bonne et chez moi, la copie se fait bien
    Par contre je n'ai pas la ligne citée dans ma dernière question piskelserarien (!)
    Tu dis

    Edit
    Tu l'as supprimée, la ligne qui ne sert à rien ?

  19. #19
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    c'est normal que tu es une erreur, ce doit être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D1").AutoFill Destination:=Range("D1:D" & DernièreLigne), Type:=xlFillDefault

  20. #20
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    Si parce qu'après il faut qu'il m'efface la colonne C, donc elle me sert...mais pourquoi chez toi ça marche et pas moi ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/01/2010, 11h44
  2. Réponses: 3
    Dernier message: 25/09/2009, 11h48
  3. Réponses: 8
    Dernier message: 05/11/2008, 20h00
  4. Réponses: 1
    Dernier message: 25/01/2008, 14h44
  5. [HTML] Comment faire pour mettre de la musique sur un site
    Par Gray Man dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/12/2005, 18h13

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