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 sélectionne cellule modifiée (rester sur même cellule) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut macro sélectionne cellule modifiée (rester sur même cellule)
    Bonjour à toutes et à tous,

    Est-il possible de rester dans la même cellule après validation (entrée) ?
    Je m'explique :
    Je suis par exemple dans la cellule G7 ... je saisie ... je valide et s'est ma cellule G7 qui est sélectionnée.
    Une macro peut-être .... j'ai pas trouvé malgré mes recherches.

    Merci de votre aide,
    Bon dimanche à toutes et à tous
    Amicalement,
    Lionel,

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour

    ceci ?

    à placer dans le module de la feuille où doit s'effectuer cette opération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Target.Select
     
    End Sub

  3. #3
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut Merci
    Bonjour Joe,

    Merci pour cette réponse "instantanée" et ça marche.

    Malheureusement, cela ne solutionne pas mes soucis :

    1 - Malgré votre réponse, je n'arrive pas à trouver ce qui me manque dans le code pour afficher le résultat de l'exécution de la macro dans la cellule saisie. Il me calcul dans la cellule qui suit après validation Exemple : si je saisie dans la cellule G7, après validattion, Si je sélectionne n'importe quelle cellule de la feuille, le résultat de la macro se met dans cette cellule.

    2 - si je saisie un n° qui commence par 33 ou 333 etc … ou pire si les 9 chiffres ne sont que des 3 … pas d'ajout de 33 devant

    Si vous pouviez m'aider, je joins mon fichier

    Encore un grand merci,
    Amicalement,
    Lionel,
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Ca m'a l'air bien compliqué pour simplement préfixer un numéro de téléphone avec un "33"

    pourquoi ne pas plutôt formater la cellule ?

    exemple :

    j'écris "03 20 21 22 23" dans une cellule

    je lui affecte le format personnalisé 33" "0#" "##" "##" "##" "##

    ma cellule devient "33 03 20 21 22 23"

    peut être que ça serait une solution pour toi ? A adapter bien sûr

    j'ai vraiment pas creusé ton fichier, je ne sais pas comment il fonctionne, y'a des formules et des macros un peu partout, dont je ne comprend pas du tout la finalité.

  5. #5
    Membre actif
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Par défaut
    Re-Bonjour,

    Merci pour vos réponses, (et un dimanche LOl)

    En fait, je travaille en appels téléphonique et je fais copier/coller mes numéro sur sites.

    Ces numéros sont toujours soit :

    - avec des espaces,
    - des signes (/ ou - etc.) entre les chiffres,
    - et encore des espaces après les chiffres (espaces au format différent de ceux d'excel).

    Afin de pouvoir appeler en copiant sans avoir à ressaisir, mes n° dans mon téléphone X-lite (téléphone internet), il me faut avoir uniquement mes numéros dans ma cellule avec 33 devant puisque je suis en Tunisie.
    Pour obtenir que des chiffres dans ma cellule, il me faut extraire (formules en C et D de ma feuille :
    =STXT(SI(GAUCHE(NUMERO(G7))="0";STXT(NUMERO(G7);2;9*9);NUMERO(G7));1;11)

    Dans mon classeur, j'ai fait ce qui suit :

    1 - midule Fonctions - Macro fonction (avec la formule qui va bien dans ma feuille en col C et D (puisque j'ai souvent deux n°),

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Numero(ByVal txt As String) As String
    With CreateObject("VBScript.RegExp")
        .Pattern = "\D+"
        .Global = True
        Numero = .Replace(txt, "")
    End With
    End Function
    2 - module AjouteIndTel - Macro Ajoute 33

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub AjouteG33()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    ActiveWorkbook.ActiveSheet.Select
    ActiveCell.Offset(0, -4).Select
     
       If Left(ActiveCell, 2) <> "33" And ActiveCell <> "" Then ActiveCell = "33" & ActiveCell.Value
       'ActiveCell.NumberFormat = """(33)""###"" ""###"" ""###"
     
    Selection.Copy
    ActiveCell.Offset(0, 4).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    ActiveCell.Offset(0, -4).Select
    ActiveCell.FormulaR1C1 = _
            "=MID(IF(LEFT(NUMERO(RC[4]))=""0"",MID(NUMERO(RC[4]),2,9*9),NUMERO(RC[4])),1,11)"
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 4).Select
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    End Sub
    Sub AjouteH33()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    ActiveWorkbook.ActiveSheet.Select
    ActiveCell.Offset(0, -4).Select
     
       If Left(ActiveCell, 2) <> "33" And ActiveCell <> "" Then ActiveCell = "33" & ActiveCell.Value
       'ActiveCell.NumberFormat = """(33)""###"" ""###"" ""###"
     
    Selection.Copy
    ActiveCell.Offset(0, 4).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    ActiveCell.Offset(0, -4).Select
    ActiveCell.FormulaR1C1 = _
            "=MID(IF(LEFT(NUMERO(RC[4]))=""0"",MID(NUMERO(RC[4]),2,9*9),NUMERO(RC[4])),1,11)"
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 4).Select
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    End Sub
    3 - Dans le code de la feuille Ajout33
    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
    18
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = Range("G7:G2000")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    Call AjouteG33
    Target.Select
    'MsgBox "33 ajouté."
    End If
     
    Set KeyCells = Range("H7:H2000")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    Call AjouteH33
    Target.Select
    'MsgBox "33 ajouté."
    End If
    ActiveCell.Offset(0, 0).Select
    Application.EnableEvents = 0: Application.EnableEvents = 1 '...revient
    End Sub
    J'espère que c'est un peu plus clair.

    Un grand merci encore,
    Amicalement,
    Lionel,

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pour ton problème numéro2, ça provient du fait que tu testes uniquement le valeur des chiffres composant ton numéro

    ligne 7 de ton second code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(ActiveCell, 2) <> "33" And ActiveCell <> "" Then ActiveCell = "33" & ActiveCell.Value
    je pense qu'il faut en amont que tu regardes combien de chiffres composent le numéro, plutôt que de détecter brutalement s'il y a des 33 ... sinon comment savoir si tu as un numéro déjà complet ou non ?

    règle déjà ce problème, je persiste à penser que tu fais trop compliqué dans ton fichier

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

Discussions similaires

  1. [Google Sheets] Modification valeur cellule par clique sur une cellule "bouton"
    Par MaitrebeWAN dans le forum APIs Google
    Réponses: 0
    Dernier message: 27/04/2015, 10h26
  2. [XL-2007] Lancer une macro lorsque l'on clique sur une cellule
    Par catetesse dans le forum Excel
    Réponses: 3
    Dernier message: 28/09/2012, 11h57
  3. [OpenOffice][Tableur] Macro bouton, appliquer une valeur sur plusieurs cellules selectionées
    Par myz-rix dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 23/07/2011, 06h37
  4. [XL-2003] macro VBA pour imposer signe "-" sur une cellule
    Par cilala dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/09/2010, 00h13
  5. Revenir sur la cellule sélectionné après exécution d'une macro
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2007, 21h50

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