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 :

Ligne à modifier dans un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut Ligne à modifier dans un tableau
    Bonjour,
    Je vais essayer d'être clair...
    J'ai un tableau de joueurs (nom, équipe, etc..)
    A moment donné, un joueur peut changer d'équipe.
    Vu que la personne qui va procéder à cette modification de joueur n'est pas forcément habituée à intervenir dans ce genre de tableau,
    je voudrais qu'elle se contente de modifier une cellule bien précise (feuille protégée bien entendu)

    Voici le tableau et les explications... (un bon croquis étant mieux qu'un long discours)
    et je joins le petit fichier excel encore plus facile...

    D'avance, merci beaucoup pour votre aide
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Avec ceci en vba, réagit au changement de l'équipe

    Pièce jointe 575750

    le code dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        If Target.Address = "$R$9" Then
            Set j = Range("I6:I35").Find(Range("R5"))
            Range(Cells(j.Row, "I"), Cells(j.Row, "M")).Value = Range("T8:X8").Value
        End If
        Application.EnableEvents = True
    End Sub
    Cdlt

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut Mis à jour
    Grand merci pour ton aide...
    J'ai mis la macro dans mon tableur mais ça ne fonctionne pas...
    Le nouveau nom d'équipe n'est pas mis en place.

    Vois svp la pic ci-jointe
    Merci
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonsoir,

    J'ai mis la macro dans mon tableur mais ça ne fonctionne pas...
    Le nouveau nom d'équipe n'est pas mis en place.
    ça ne fonctionne pas, Que se passe -t_il exactement? citez des exemples qui ne fonctionnent pas

    Avez-vous essayez le fichier joint? pour ma part il semble fonctionner correctement.

    Dans l'attente de votre réponse.

    Cdlt

  5. #5
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    Ben.. il ne se passe rien.
    Voyez le fichier joint... j'y ai mis la macro que vous m'avez donnée...

    pièce jointe: update player.xlsm
    Merci
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour,

    Vous avez mal positionné le code fourni.

    Vous avez placé le code dans un nouveau module. Il faut que vous le mettiez dans le code de la feuille sur laquelle il doit agir (càd "3 - PLAYER").

    Ensuite attention avec le code fourni. Il vous faut d'abord modifier le numéro du joueur en R5 avant de préciser sa nouvelle équipe en R9. C'est très important.
    De façon automatique le code change "Name (Team)" du joueur dès que la valeur de R9 est modifiée. Donc si vous commencez par changer l'équipe avant de mettre le joueur alors c'est le joueur qui se trouve en R5 qui sera modifié.

  7. #7
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    pas grave, j'y arrive pas.
    Je n'y connais rien dans ce langage.
    Merci quand même

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour raivig,
    Dans ma première réponse, juste au-dessus des lignes de code, j'avais bien préciser que, le code était à coller dans le module de la feuille (j'aurai dû mettre en caractères gras) et non pas dans un module standard, comme l'a rappelé Alex020181

    Le fait de placer le code dans le module de la feuille active, crée ce qu'on appelle une "MACRO EVENEMENTIELLE", cette macro réagit en fonction de l'évènement choisi, et non pas à la demande en cliquant sur un bouton.
    Ici, le nom de la macro évènementielle est "Worksheet_Change", et elle réagit à chaque changement de valeur de la cellule R9.

    Quand vous faites ALT + F11 pour accéder à la fenêtre VBA, dans la partie gauche , faites un double-clic sur "Feui1(3-Player)" et collez le code dans la fenêtre de gauche. Supprimez le code du module1.
    Pièce jointe 575815

    Cdlt

  9. #9
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    J'ai essayé de respecter scrupuleusement vos recommandations, rien n'y fait.
    L'exemple que je vous avais transmis était un extrait et j'avais oublié certaines choses.

    Là, je fais une copie d'écran, la macro est bien dans la feuille "MODIFY PLAYER"
    j'ai vérifié les concordances des cellules...
    je commence bien entedu dans l'ordre : choix du joueur puis modif nouvelle équipe

    rien à faire.
    Je n'y comprends rien...

    Désolé mais vous aidez gentiment un novice en matière de Visual Basic
    Si j'utilisais moi-même ce tableur j'aurais vite fait de faire un copier/coller des cellules T8:X8 vers la ligne prévue...
    mais le problème est que quelqu'un d'autre risque d'utiliser ce tableau et de faire ces modif, et qui ne s'y connait très très peu sur excel... encore plus nul que moi...

    En tout cas c'est gentil de m'aider, merci encore
    Images attachées Images attachées  

  10. #10
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Regardez bien le nom du module tout en haut, on voit que c'est le module 5, je reprends ce que j'ai écrit précédemment en mettant en rouge ce que vous avez sûrement oublié de faire

    Quand vous faites ALT + F11 pour accéder à la fenêtre VBA, dans la partie gauche , faites un double-clic sur "Feui1(3-Player)" et collez le code dans la fenêtre de gauche. Supprimez le code du module1.
    à part que ce n'est plus la feuille "Feuil(3-Player")" mais "Feuil15(MODIFY PLAYER)"

    Pièce jointe 575821

  11. #11
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    Bon, je vous ai assez fait perdre de temps comme ça.
    Je n'y arrive pas.
    J'abandonne.

    Merci encore

  12. #12
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Mais non, faut pas abandonner. il faut persévérer au contraire et essayer de comprendre ce qui ne va pas.
    Pouvez-vous déposer votre fichier, remplacez les données confidentielles par des valeurs bidons?

  13. #13
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    Mon cher Arturo....
    j'ai fini par tomber par hasard sur la solution.
    Je m'obstinais à soit créer un bouton pour lancer la macro, soit de cliquer sur le bouton "Executer" et ça nemarchait pas.

    Ensuite plus tard seulement je me suis rendu compte que la maise à jour se faisait simplement en mettant à jour la case R9
    Je n'en revenais pas.
    Il m'a fallu du temps pour comprendre le principe et le fonctionnement.

    A présent, suite à des manip de nul... je n'ai plus rien lorsque je fais alt+F11
    je ne vois plus mes fenêtres...

    Quelle galère, suis vraiment nul dans ce domaine
    En tout cas merci, si je retrouve ces fenêtre dans le alt+F11 je crois que ça fonctionnera super.
    Merci encore
    Images attachées Images attachées  

  14. #14
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Je m'obstinais à soit créer un bouton pour lancer la macro, soit de cliquer sur le bouton "Executer" et ça nemarchait pas.
    Ensuite plus tard seulement je me suis rendu compte que la maise à jour se faisait simplement en mettant à jour la case R9
    Je n'en revenais pas.
    J'avais pourtant avoir tout bien expliqué dans le post #8
    Le fait de placer le code dans le module de la feuille active, crée ce qu'on appelle une "MACRO EVENEMENTIELLE", cette macro réagit en fonction de l'évènement choisi, et non pas à la demande en cliquant sur un bouton.
    Ici, le nom de la macro évènementielle est "Worksheet_Change", et elle réagit à chaque changement de valeur de la cellule R9.
    **********************************************************************************************************

    A présent, suite à des manip de nul... je n'ai plus rien lorsque je fais alt+F11
    je ne vois plus mes fenêtres...
    récupérez le code sur le dernier fichier fourni toujours disponible dans les posts précédents, copiez et collez-le dans le fichier ou vous avez tout perdu.

  15. #15
    Invité de passage
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1
    Par défaut Essai
    Bonjour ARTURO83, raivig et le forum

    Cela fonctionne bien

    bonne continuation

    jc

  16. #16
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    Oui... suis bien content. Cette petite macro fonctionne à présent.
    et exactement comme je voulais.
    Dernière petite chose: je souhaite protéger la feuille
    est t'il possible d'y ajouter un ordre de déprotection au début, puis reprotéger à la fin...? avec code bien entendu.

    Si pas possible, c'est pas grave.
    En tout cas en énorme merci.

  17. #17
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Voici un proposition, ce n'est pas une protection absolue car elle peut être contournée par un bidouilleur.
    Copiez le code suivant dans le module "ThisWorkbook", mot de passe utilisé "raivig", mettez ce que vous voulez?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        ActiveSheet.Protect Password:="raivig", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
     
    Private Sub Workbook_Open()
    Essai:
        mdp = Application.InputBox("Mot de passe", "Entrer le mdp")
        If mdp <> "raivig" Then
            MsgBox "Mdp incorrect", vbCritical
            GoTo Essai
        Else
            ActiveSheet.Unprotect "raivig"
        End If
    End Sub
    Faire un double-clic sur "ThisWorkBook" et coller le code dans la fenêtre de droite
    Pièce jointe 575852

    Cdlt

  18. #18
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    Merci pour cet ajout de protection de feuille...

    Malheureusement... je viens de découvrir un problème (pas énorme) mais il peut être embêtant...
    Tout se passe super bien...
    Par contre si je veux modifier le joueur numéro 1... après avoir cliqué sur la cellule "R9"
    étrangement il remplace les valeurs de la ligne 15 (c'est à dire que je n'ai plus le joueur #10
    et le joueur John.W figure en double.

    Il n'y a qu'avec ce joueur que ça se passe comme ça. Les autres pas de problème.
    J'ai vérifié, re-vérifié le code macro... là, je nage...

    Je suis vraiment désolé de revenir comme ça à la charge... et j'admire votre patience.
    Images attachées Images attachées  

  19. #19
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Exact, petite négligence de ma part

    Remplacez la ligne suivante dans le module de la feuille "Feuil15(MODIFY PLAYER)"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set j = Range("I6:I35").Find(Range("R5"))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set j = Range("I6:I35").Find(Range("R5"), lookat:=xlWhole)
    Cdlt

  20. #20
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2019
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2019
    Messages : 109
    Par défaut
    Super... merci.
    je n'appelle pas ça une négligence...
    Rome ne s'est pas construite en un jour non-plus.

    Etant donné que cette liste est appelée à s'allonger, j'ai modifié la commande (c'est un détail que je n'avais pas précisé au départ)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set j = Range("I6:I69").Find(Range("R5"))
    par Set j = Range("ordre").Find(Range("R5"))
    J'ai nommé la colonne "ordre", ainsi les nouveaux joueurs sont inclus...
    J'ai vérifié en ajoutant des nouveaux joueurs... ça fonctionne correctement.

    En tout cas, mille merci
    Bien cordialement
    Rainier

Discussions similaires

  1. [XL-2003] (Cacher) modifié en : Supprimer les lignes vides dans un tableau
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/04/2009, 18h12
  2. Lignes verticales dans un tableau
    Par Stochastic dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 27/09/2006, 14h59
  3. Ajout de ligne dynamique dans un tableau (Incompatible IE)
    Par seb34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 26/05/2006, 11h03
  4. Éliminer les lignes blanches dans un tableau
    Par DenPro dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/11/2004, 01h27
  5. [HTML] Se placer à une ligne précise dans un tableau
    Par seb55555 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/10/2004, 15h06

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