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 :

Copie du contenu d'une cellule avec restriction [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Employé administratif
    Inscrit en
    Mars 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Mars 2018
    Messages : 116
    Par défaut Copie du contenu d'une cellule avec restriction
    Bonjour,

    Est-ce que quelqu’un pourrait m’aider à traduire en VBA ce qui suit :

    Si le rang(« C2 :C24 ») contient une information alors ne pas copier la valeur de (« B2:B24 ») même si ce n’est pas la même valeur.

    Si n’importe quelle cellule dans le rang(« C2 :C24 ») est vide ET que dans le rang (« B2 :B24 ») il y a une info alors la copier dans le rang (« C ») en regard de la cellule du rang (« B »).

    Le but est de garder la trace d’une date initialement choisie alors qu’elle peut être modifiée après choix.

    Nom : Capture.JPG
Affichages : 144
Taille : 26,6 Ko

    J’arrive à faire ma macro pour la copie des données mais je n’arrive pas à y intégrer la restriction relative à la présence d’une info en colonne « C » qui ne doit pas être mise à jour.

    La macro en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Copier_valeurs()
        ActiveSheet.Unprotect
        Range("B2:B24").Select
        Selection.Copy
        Range("C2:C24").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Selection.NumberFormat = "m/d/yyyy"
        ActiveSheet.Protect
    End Sub
    Merci à celles et ceux qui auront pris le temps de me lire et, qui sait, de m’aider 😉

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    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 Test
     
    Dim WsTest as worksheet
    set WsTest = workbooks("Test").sheets("Test")
     
    Dim i as long, Ligne as long
    Ligne = sheets("Test").cells(rows.count,2).end(xlup).row
     
    for i = 2 to Ligne step 1
     
    if WsTest.cells(i,3)="" then
    WsTest.cells(i,3)=WsTest.cells(i,2)
     
    next i
     
    end sub
    Selon moi, la situation n°1 n'a pas lieu d'exister au regard de la situation n°2 :
    Je m'explique !

    Situation n°1 :
    Si ta cellule en colonne C n'est pas vide alors on fait rien

    Situation n°2 :
    Si ta cellule dans colonne C est vide alors on copie sinon on fait

    Si j'ai mal compris n'hésites pas à me le dire

    Edit : Pour que ça fonction chez toi, remplace les mots "Test" par les noms correspondants à ton classeur Excel (à part le WsTest, celui là tu peux le laisser)

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 684
    Par défaut
    Bonjour,

    Une proposition a mettre en pratique avec l'enregistreur de macro pour qu'il te donne le code:
    Dans une autre colonne ajouter la formule suivante =SI(C1>0;C2;B2) à la ligne 2 puis l'étendre sur autant de lignes que nécessaire
    Puis copier le contenu de cette colonne sur ta colonne C

  4. #4
    Membre éprouvé
    Homme Profil pro
    Employé administratif
    Inscrit en
    Mars 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Mars 2018
    Messages : 116
    Par défaut
    Bonjour,

    Merci à vous deux pour vos suggestions que je testerai dès que possible. Je reviendrai sur ce fil pour un feedback.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Employé administratif
    Inscrit en
    Mars 2018
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Employé administratif

    Informations forums :
    Inscription : Mars 2018
    Messages : 116
    Par défaut
    Citation Envoyé par Trystan441 Voir le message
    Bonjour,

    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 Test
     
    Dim WsTest as worksheet
    set WsTest = workbooks("Test").sheets("Test")
     
    Dim i as long, Ligne as long
    Ligne = sheets("Test").cells(rows.count,2).end(xlup).row
     
    for i = 2 to Ligne step 1
     
    if WsTest.cells(i,3)="" then
    WsTest.cells(i,3)=WsTest.cells(i,2)
     
    next i
     
    end sub
    Selon moi, la situation n°1 n'a pas lieu d'exister au regard de la situation n°2 :
    Je m'explique !

    Situation n°1 :
    Si ta cellule en colonne C n'est pas vide alors on fait rien

    Situation n°2 :
    Si ta cellule dans colonne C est vide alors on copie sinon on fait

    Si j'ai mal compris n'hésites pas à me le dire

    Edit : Pour que ça fonction chez toi, remplace les mots "Test" par les noms correspondants à ton classeur Excel (à part le WsTest, celui là tu peux le laisser)
    Bonjour Trystan,

    Merci pour ta proposition de code. Je l'ai testée mais j'ai une erreur :

    Nom : Capture.JPG
Affichages : 126
Taille : 38,1 Ko

    Comment y remédier stp ?

    Bien à toi,

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 684
    Par défaut
    Tu as un if sans end if (ligne 11)

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    si je m'en tiens à ça :
    Le but est de garder la trace d’une date initialement choisie alors qu’elle peut être modifiée après choix.
    Je le ferais au moment de la saisie.
    Dans le module de la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim pl As Range, c As Range
        Set pl = Intersect(Target, UsedRange, Columns(2))
        If Not pl Is Nothing Then
            Application.EnableEvents = False
            For Each c In pl
                If c.Offset(, 1) = "" Then c.Offset(, 1).Value = c
            Next c
            Application.EnableEvents = True
        End If
    End Sub
    eric

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

Discussions similaires

  1. Contenu d'une cellule avec getElementsByName
    Par Bdloul dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/12/2011, 12h35
  2. [XL-2007] Copier contenu d'une cellule avec critères à définir
    Par gabi75 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 01/06/2010, 16h07
  3. Réponses: 2
    Dernier message: 04/02/2009, 13h13
  4. Réponses: 7
    Dernier message: 28/09/2007, 10h51
  5. Copier le contenu d'une cellule avec suivie en cas de changement
    Par geeksideofme dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2007, 18h21

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