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 :

vider le contenu de 2 ou plusieurs cellules [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Points : 8
    Points
    8
    Par défaut vider le contenu de 2 ou plusieurs cellules
    Bonjour,

    Etant tout nouvellement enregistré sur ce forum, avant de poser ma question je tiens à remercier l'ensemble des contributeurs qui aident bénévolement.
    Depuis de nombreuses années j'ai pu obtenir un tas de réponses à mes petits problèmes en parcourant ce forum en simple visiteur guidé par ce célèbre moteur et ami de tous

    Ce forum est une mine d'or. Donc, merci !
    Je précise que, même si je me débrouille sur de l'excel de base, je reste nullissime en VBA (et encore le mot est faible)
    Du coup, tous mes classeurs sont "bidouillés" sans recours à VBA et j'essaye de m'en passer autant que possible (certainement une erreur mais bon, quand on est nul...)

    Mais là, je sèche et je pense que je ne peux pas faire autrement qu'utiliser un peu de code.


    j'en viens à ma question (j'espère la poser sur la bonne partie du forum) :

    Dans une feuille, je dois saisir un paramètre soit en € soit en %
    Je saisis
    soit un montant en € dans 1 cellule (admettons "B3"),
    soit en % dans une autre ("D3" par exemple).

    Je veux vider "D3" si je saisi en "B3" et inversement si je saisi en "B3" je veux vider "D3"
    Je dois faire exactement la même manipulation pour 3 autres paramètres sur la même feuille
    Je ne veux pas passer par une étape préliminaire type liste déroulante ou un truc dans le genre car il faut que la saisie de ce paramètre soit la + simple et rapide possible pour l'utilisateur final.



    Donc, je bidouille sans succès depuis un moment avec .ClearContents et j'ai passé en vain plusieurs heures sur le net pour trouver une réponse à ce problème.
    La solution est certainement simple mais ça dépasse mes compétences.
    => vous voyez le niveau... c'est pas brillant

    quelqu'un aurait-il une idée pour me venir en aide ?

    Par avance, merci d'avoir pris le temps de me lire.

  2. #2
    Membre habitué
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 482
    Points : 161
    Points
    161
    Par défaut
    Bonjour aldorhyn,

    Essaye de regarder du coté de "Worksheet_Change" en utilisant .ClearContents tu devrais trouver.
    Du moins je pense.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse
    Mais je vois pas comment y arriver.
    Je suis vraiment nul en VBA

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    le principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False
        Select Case Target.Address(0, 0)
        Case "B3": [D3].ClearContents
        Case "D3": [B3].ClearContents
        End Select
        Application.EnableEvents = True
    End Sub
    maintenant s'il s'agit de plages entières à surveiller, ou si ça doit fonctionner avec un coller multiple il faudrait faire autrement.
    eric

  5. #5
    Membre habitué
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 482
    Points : 161
    Points
    161
    Par défaut
    Bonjour eriiic,

    Je pensais a quelque chose comme ça, mais je n'aurais pas fait un code aussi propre que toi.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Extraordinaire...

    eriiic, => merci, merci, merci !!!

    C'est exactement ce que je recherchais

    Alors, je comprend toujours pas (...et je suis preneur d'explications avec plaisir) mais vu que j'ai 4 paramètres à valider de cette manière, j'ai rajouté les cellules concernées à la suite.

    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False
        Select Case Target.Address(0, 0)
        Case "D44": [F44].ClearContents
        Case "F44": [D44].ClearContents
        Case "D47": [F47].ClearContents
        Case "F47": [D47].ClearContents
        Case "K44": [M44].ClearContents
        Case "M44": [K44].ClearContents
        Case "K47": [M47].ClearContents
        Case "M47": [K47].ClearContents
        End Select
        Application.EnableEvents = True
     
    End Sub
    Et ça fonctionne.
    Pour le béotien que je suis en VBA, ça relève du miracle....

    donc encore merci merci bcp !!!

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 753
    Points : 28 603
    Points
    28 603
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour rendre la lecture plus simple encore
    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)
       If Target.Count > 1 Then Exit Sub
        Application.EnableEvents = False
        With Target
          Select Case .Address(0, 0)
            Case "D44", "D47", "K44", "K47": .Offset(ColumnOffset:=2).ClearContents
            Case "F44", "F47", "M44", "M47": .Offset(ColumnOffset:=-2).ClearContents
          End Select
        End With
        Application.EnableEvents = True
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    euhh...

    Je suis un

    Je comprend rien...

    C'est de l'hébreu.... mais merci à tous !!

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour aldorhyn
    Aucune langue n'est incompréhensible, que ce soit l'hébreu, le chinois, ou quoi que ce soit d'autre, y compris le français.
    Il suffit de l'apprendre et tout devient clair.
    L'apprendre ? ben .... en en étudiant sa structure,t ses formes et ses expressions idiomatiques. Elles y sont exposées, en ce qui concerne VBA/Excel, dans ton aide interne VBA, qui est à lire, comme on lirait, pour n'importe quelle langue, un dictionnaire et la grammaire de cette langue.
    Tout bête, non ?
    Ne ménage pas cet effort-là. Tu en sortiras non seulement enrichi dans le domaine de CETTE langue, mais dans la foulée dans le domaine de toute nouvelle langue à apprendre, le seconde s'apprenant plus facilement que la première, la troisième plus facilement que la seconde, etc ... (crois-moi).
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2018
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par unparia Voir le message
    Il suffit de l'apprendre et tout devient clair.
    L'apprendre ? ben .... en en étudiant sa structure,t ses formes et ses expressions idiomatiques. Elles y sont exposées, en ce qui concerne VBA/Excel, dans ton aide interne VBA, qui est à lire, comme on lirait, pour n'importe quelle langue, un dictionnaire et la grammaire de cette langue.

    Ne ménage pas cet effort-là. Tu en sortiras non seulement enrichi dans le domaine de CETTE langue, mais dans la foulée dans le domaine de toute nouvelle langue à apprendre, le seconde s'apprenant plus facilement que la première, la troisième plus facilement que la seconde, etc ... (crois-moi).
    Amitiés
    Je suis entièrement d'accord avec toi.
    et je demande qu'à apprendre au contraire car avoir une réponse à un problème c'est bien mais comprendre la réponse c'est encore mieux.
    C'est là qu'on progresse....
    Comme pour bcp de choses en informatique, l'apprentissage de façon autodidacte est (de mon point de vue) la méthode la + efficace.
    C'est ce que je fais depuis longtemps pour pleins d'autres sujets qu'Excel
    Sauf que, je ne sais pas pourquoi, le VBA (ou de façon plus générale, le code),... ben j'ai eu beau essayer à plusieurs reprises... ça passe pas... .

    Vu qu'on est en début d'année et que c'est le temps des bonnes résolutions, je vais essayer de changer de méthode d'apprentissage sur ce point précis...
    qui sait ? peut-être que ça marchera ce coup-ci.

    En tous cas, merci pour ton point de vue.

  11. #11
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Pour apprendre n'hésite pas à te servir de F1 sur les fonctions, méthodes et propriétés que tu ne connais pas.
    L'aide excel est très complète et bien faite.
    eric

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour eriiic
    Pour apprendre n'hésite pas à te servir de F1 sur les fonctions, méthodes et propriétés que tu ne connais pas.
    L'aide excel est très complète et bien faite.

    Cela fait plaisir de lire ce que tu as écrit là et qui est tellement vrai.
    Merci de l'avoir dit.
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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

Discussions similaires

  1. [VBA] verifier le contenu de plusieurs cellules avant impression
    Par franckla dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/10/2017, 13h24
  2. [XL-2010] Vider le contenu d'une plage de cellules
    Par kesamba dans le forum Excel
    Réponses: 2
    Dernier message: 08/01/2015, 18h33
  3. Réponses: 14
    Dernier message: 25/05/2009, 19h57
  4. Concaténer le contenu de plusieurs cellules dans une cellule
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/03/2008, 15h15
  5. [vbexcel]vider le contenu d'une ou plusieurs feuille(s)
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/11/2005, 15h52

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