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 :

Microsoft Excel vers Mac Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Microsoft Excel vers Mac Excel
    Je tente d'utiliser une feuille de calcul créée sur Microsoft Excel 2011 sur un Mac avec la version Excel Mac 2011.

    J'ai réussi à faire fonctionné toutes les célules et les macros sauf cette commande en visual basic:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("E12")) Is Nothing Then
    SendKeys "{TAB}"
    Call MacroE12
    End If
    Je ne trouve pas l'équivalent de "Sendkeys" sur Mac Excel.

    Quelqu'un peut-il m'aider?

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Je n'ai pas de version Mac donc je ne peux tester mais si j'en crois ce qui est dit ici, peut-être comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MacScript ("tell application " & Chr(34) & "System Events" & Chr(34) & " to keystroke " & Chr(34) & "{TAB}" & Chr(34))
    A+

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, voir ici ?

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par davido84 Voir le message
    Je n'ai pas de version Mac donc je ne peux tester mais si j'en crois ce qui est dit ici, peut-être comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MacScript ("tell application " & Chr(34) & "System Events" & Chr(34) & " to keystroke " & Chr(34) & "{TAB}" & Chr(34))
    A+

    Merci beaucoup; cette partie semble fonctionner..... mais ça bloque à l'instruction suivante de la macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MacroH12()
      If Worksheets("xxx").Range("H12").Value = "x" Then
        Exit Sub
      End If
      Worksheets("xxx").Range("I12") = Worksheets("xxx").Range("H12")
    End Sub
    Merci à l'avance

  5. #5
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Merci beaucoup; cette partie semble fonctionner..... mais ça bloque à l'instruction suivante de la macro:
    Quelle ligne ? Vérifie que le nom des feuilles soit bien orthographié.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Désolé si je ne vous ai pas répondu avant; j'ai dû m'absenter quelques jours.

    Voici mon premier code VLA qui semble fonctionner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("E12")) Is Nothing Then
    MacScript ("tell application " & Chr(34) & "System Events" & Chr(34) & " to keystroke " & Chr(34) & "{TAB}" & Chr(34))
    Call MacroE12
    End If
    et voici la macroE12:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MacroE12()
     If Worksheets("LB").Range("E12").Value = "X" Then
        Exit Sub
      End If
      ThisWorkbook.Worksheets("LB").Select
      Sheets("LB").Range("F12").Value = Sheets("LB").Range("E12").Value
     
    End Sub
    Sous Windows7, lorsque je donnais la valeur 3 à la célule E12, la célule F12 prenait aussi la valeur 3.

    Ensuite, si je donnais la valeur "x" à la célule E12, la valeur 3 demeurait à la célule F12.

    En fait je désire conserver l'ancienne valeur de E12 dans F12 même après que j'ai donné une valeur "x" à E12.

    Maintenant sur le Mac, la valeur de E12 est bien copiée sur F12, mais lorsque je mais la célule E12 à "x",
    la célule F12 devient "x".

    Merci à l'avance pour toute suggestion.

  7. #7
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Bonsoir,

    2 solutions :
    soit utiliser en haut du module avant toutes macros : Option Compare text
    ou utiliser un Or dans le If (cf ligne 4 en commentaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare text '
     
    Sub MacroE12()
        If Worksheets("LB").Range("E12").Value = "X" Then 'If Worksheets("LB").Range("E12").Value = "X" Or Worksheets("LB").Range("E12").Value = "x" Then
            Exit Sub
        End If
        Sheets("LB").Range("F12").Value = Sheets("LB").Range("E12").Value
        Application.Goto Sheets("LB").Cells(12, 6)
    End Sub
    Forcément si tu lui demande un X majuscule dans le if et tu lui mets un x minuscule la macro continuera et changera ta valeur

    Pour info je suis tombé sur ceci qui peut en intéressé plus d'un; si vous testez je veux bien un retour. Merci
    'Try using:
    'MacScript ("tell application " & Chr(34) & "System Events" & Chr(34) & " to key code 7") 'this will type the letter "x"
    ' I use this for my validation dropdown lists to automate the dropdown action when the cell is clicked:
    'MacScript ("tell application " & Chr(34) & "System Events" & Chr(34) & " to key code 126 using option down")
    'You can also use the "Control", "Command" & "Option" Keys:
    'tell application "System Events" to keystroke "f" using {control down, command down, option down}

    'Key Code numbers are as follows:
    '0 = a
    '1 = s
    '2 = d
    '3 = f
    '4 = h
    '5 = g
    '6 = z
    '7 = x
    '8 = c
    '9 = v
    '10 = ISO_Section
    '11 = b
    '12 = q
    '13 = w
    '14 = e
    '15 = r
    '16 = y
    '17 = t
    '18 = 1
    '19 = 2
    '20 = 3
    '21 = 4
    '22 = 6
    '23 = 5
    '24 = (Equal)
    '25 = 9
    '26 = 7
    '27 = (Minus)
    '28 = 8
    '29 = 0 (number 0)
    '30 = (RightBracket)
    '31 = o (letter "o")
    '32 = u
    '33 = (LeftBracket)
    '34 = i (Letter "eye")
    '35 = p
    '36 = (Return)
    '37 = l (Letter "el")
    '38 = j
    '39 = (Quote)
    '40 = k
    '41 = (Semicolon)
    '42 = (Backslash)
    '43 = (Comma)
    '44 = (Slash)
    '45 = n
    '46 = m
    '47 = (Period)
    '48 = (Tab)
    '49 = (Space)
    '50 = ANSI_Grave
    '51 = (Delete)
    '53 = (Escape)
    '55 = (Command)
    '56 = (Shift)
    '57 = (CapsLock)
    '58 = (Option)
    '59 0x3B Control
    '60 0x3C RightShift
    '61 0x3D RightOption
    '62 0x3E RightControl
    '63 0x3F Function
    '64 0x40 F17
    '65 0x41 ANSI_KeypadDecimal
    '67 0x43 ANSI_KeypadMultiply
    '69 0x45 ANSI_KeypadPlus
    '71 0x47 ANSI_KeypadClear
    '72 0x48 VolumeUp
    '73 0x49 VolumeDown
    '74 0x4A Mute
    '75 0x4B ANSI_KeypadDivide
    '76 0x4C ANSI_KeypadEnter
    '78 0x4E ANSI_KeypadMinus
    '79 0x4F F18
    '80 0x50 F19
    '81 0x51 ANSI_KeypadEquals
    '82 0x52 ANSI_Keypad0
    '83 0x53 ANSI_Keypad1
    '84 0x54 ANSI_Keypad2
    '85 0x55 ANSI_Keypad3
    '86 0x56 ANSI_Keypad4
    '87 0x57 ANSI_Keypad5
    '88 0x58 ANSI_Keypad6
    '89 0x59 ANSI_Keypad7
    '90 0x5A F20
    '91 0x5B ANSI_Keypad8
    '92 0x5C ANSI_Keypad9
    '93 0x5D JIS_Yen
    '94 0x5E JIS_Underscore
    '95 0x5F JIS_KeypadComma
    '96 0x60 F5
    '97 0x61 F6
    '98 0x62 F7
    '99 0x63 F3
    '100 0x64 F8
    '101 0x65 F9
    ''102 0x66 JIS_Eisu
    '103 0x67 F11
    '104 0x68 JIS_Kana
    '105 0x69 F13
    '106 0x6A F16
    '107 0x6B F14
    ''109 0x6D F10
    '111 0x6F F12
    '113 0x71 F15
    '114 0x72 Help
    '115 0x73 Home
    '116 0x74 PageUp
    '117 0x75 ForwardDelete
    '118 0x76 F4
    '119 0x77 End
    '120 0x78 F2
    '121 0x79 PageDown
    '122 0x7A F1
    '123 0x7B LeftArrow
    '124 0x7C RightArrow
    '125 0x7D DownArrow
    '126 0x7E UpArrow

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour vos réponses rapides.

    Malheureusement, je n'ai pas encore eu le temps d'essayer vos dernières solutions, mais soyez assuré que je vais le faire et vous revenir avec mes commentaires.

    Entretemps, j'aurais une autre question......

    Comment faire pour sauter immédiatement à la prochaine cellule après avoir entrer une donnée.

    Dans une cellule, j'entre une valeur entre 0 et 9 et j'aimerais sauter à la prochaine cellule libre aussitôt après avoir entrer le chiffre.

    Merci

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    A Ryu
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Ucase(Worksheets("LB").Range("E12").Value) = "X" Then
    ...

  10. #10
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Hi,
    Bien vu casefayere ça ne m'était pas venu à l'esprit
    C'est plus simple !

  11. #11
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Re @aietoe,
    Est ce que cela vous convient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Application.Goto Range(Split(Target.Address, "$")(1) & Rows.Count).End(xlUp)(2)
    End Sub
    à mettre dans ThisWorbook

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Désolé messieurs, mais je ne comprends pas votre solution. Je répète ma question:

    Comment faire pour sauter immédiatement à la prochaine cellule après avoir entrer une donnée.

    Dans une cellule, j'entre une valeur entre 0 et 9 et j'aimerais sauter automatiquement à la prochaine cellule libre aussitôt après avoir entrer le chiffre.

    Merci

  13. #13
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Avez vous essayé ?
    c'est une macro évènement qui lors d'une modification dans une cellule de la feuille, va sur la 1è cellule vide après la dernière donnée d'une même colonne.

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    J'ai mis le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Application.Goto Range(Split(Target.Address, "$")(1) & Rows.Count).End(xlUp)(2)
    End Sub
    dans ThisWorkbook

    et lorsque j'entre "1" dans la cellule D12, je doit quand même utiliser le TAB ou la flèche droite pour aller à la cellule suivante et je me retrouve à la cellule D47 !!!

    Qu'est-ce que je fais d'incorrect?

  15. #15
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Il faut être plus clair dans les explications car sauter à la cellule suivante c'est descendre vers le bas
    Si on se déplace sur la droite ce n'est pas la même chose.
    Soyez plus explicite svp.
    Comme vous êtes nouveau, un petit passage ici serait bien.

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    D'accord, désolé,

    Je tenterai d'être plus précis à l'avenir.

    C'est effectivement à la cellule suivante sur la même ligne que je désire sauter.

    Merci de votre patience.

  17. #17
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Application.Goto Cells(Split(Target.Address, "$")(2), Columns.Count).End(xlToLeft).Offset(, 1)
    End Sub

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Retraite
    Inscrit en
    Juillet 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Juillet 2016
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Non, ça ne fonctionne pas.

    Merci beaucoup pour vos efforts.

  19. #19
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 176
    Points
    4 176
    Par défaut
    Difficile d'apporter de l'aide sans une explication claire et exhaustive.
    Si c'est juste la cellule à droite à coté par exemple E1 pour aller à F1 la simple touche tabulation suffit.
    Sinon voir :
    Les évènements du module objet ThisWorkbook, dans Excel
    Les évènements dans la feuille de calcul Excel
    La propriété Offset, End(xlToright) ... -> voir dans l'aide
    Ce post peut aussi vous intéressé : Dernière ligne et la dernière colonne renseignées d'une feuille

    Voilà

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    si c'est la premiere cellule vide en partant de la droite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Cells(Target.row, columns.countEnd(xlToLeft).Offset(, 1).select
    End Sub
    mais avec celle la si tu a des cellules remplies non contigues tu va les zaper

    alors


    prend la premières cellules vide en partant de gauche meme si il y en a des pleines après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
       Cells(target.row,1).End(xlToright).Offset(, 1).select
    End Sub

Discussions similaires

  1. [AC-2007] Exporter une table vers Excel et d'Excel vers une table
    Par kapkiller dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/02/2015, 23h08
  2. [XL-2010] Export données Excel vers table Microsoft Sql Server
    Par Lucas G dans le forum Excel
    Réponses: 1
    Dernier message: 17/08/2013, 13h18
  3. [Toutes versions] Importation champ Excel vers champ Excel !
    Par tiyo76 dans le forum Excel
    Réponses: 4
    Dernier message: 07/06/2013, 11h09
  4. Lien vers fichier Excel à ouvrir sous Excel
    Par BILLANT dans le forum SharePoint
    Réponses: 1
    Dernier message: 12/06/2009, 10h05
  5. [EXCEL/C#] Piloter Excel XP compatible Excel 2003 ?
    Par legillou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/08/2006, 08h01

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