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 :

Validation de cellules


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut Validation de cellules
    Bonjour,
    Voici mon problème dans l'éxécution d'une macro. J'ai dans les celulle R24 à R36 une formule obtenue par concaténation de plusieurs celulles. Je voudrais que ces formules s'exécutent dans les celulle G24 à G36. Pour cela j'ai crée une macro qui fait un copier coller spécial valeur de ma série R vers ma série G et pour valider la forumule j'entre dans la cellule par F2 et valide avec ENTER.
    Le problème est que seule la dernière celulle est validée, dans les autres je vois toujours apparaitre la formule entière et non le résultat.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CopierCollerValeur()
    Dim x As Integer
        For x = 24 To 36
            Cells(x, 18).Select
            Selection.Copy
            Cells(x, 7).Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
            Application.CutCopyMode = False
              Application.SendKeys "{f2}"
              Application.SendKeys "{ENTER}"
        Next x
    End Sub
    Merci pour votre aide ...
    (PS : je débute de rien en VBA !)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je ne comprends pas très bien ce texte, puisque vous parlez de faire un collage spécial valeur :

    Je voudrais que ces formules s'exécutent dans les celulle G24 à G36.
    D'autre part j'ai testé votre code qui s'exécute très bien mais je n'ai pas compris non plus l'utilité de ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.SendKeys "{f2}"
              Application.SendKeys "{ENTER}"
    le résultat est le même avec ou sans.

    Donnez un exemple de la formule qui existe en colonne "R".

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut
    Voici exemple pour la ligne 24
    La formule de R24 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER("=index(";$P$19;$P$20;$P24;$Q24)
    Qui donne la valeur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =index('X:\Contrôles Trempe\[_controles_trempe.xls]Modèle'!$A$4:$AA$46;equiv("Longueur nette mesurée";'X:\Contrôles Trempe\[_controles_trempe.xls]Modèle'!$A$4:$A$46;0);equiv($G$22;'X:\Contrôles Trempe\[_controles_trempe.xls]Modèle'!$A$4:$AA$4;0))
    Dans ma macro je veux lui dire de copier la valeur de R24 dans la cellule G24 (copier special valeur) puis de valider la formule dans cette celulle d'ou F2 pour entrer dans la cellule et ENTER pour valider, et ainsi de suite jusqu'à ligne 36. Si je ne faisais que ENTER, je pense qu'il me copierait la formule d'origine (=concatener ...)

    J'ai l'impression que F2 + ENTER ne fonctionne qu'à la dernière cellule de la liste (G36), seule cellule ou la formule est réellement exécutée, dans les autres cellules on voit apparaître la valeur (=index...) (voir copie écran en attachement)
    Fichiers attachés Fichiers attachés

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Bonjour,

    Tu devrais peut-être créer ta formule dans vba non ?

    Essaye ça :

    En R24 (enlève le =) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER("index(";$P$19;$P$20;$P24;$Q24)
    Dans vba :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("G24").Formula = "=" & Range("R24")

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Par défaut
    Bonjour,
    David, j'ai bien essayé ta formule, mais elle me donne une erreur 1004.
    Alors après avoir essayé plusieurs choses, j'ai pris le problème tout autrement.
    J'ai mis directement mes formules finales dans les celulles G24 à G36.
    Puis j'ai crée une macro qui modifie mes variantes

    Voici le code si ça peut servir à quelqu'un :
    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
    Sub MiseAJourFormule()
     
        Dim x As Integer
     
        'pour exécution des lignes 24 à 36
        For x = 24 To 36
     
            Cells(x, 7).Select
     
        'Remplacer _controles_rodage.xls]Modèle'! par valeur de la cellule R21
        'qui donnera le nom du fichier et l'onglet en fonction de la date du contrôle
        ActiveCell.Replace What:="_controles_rodage.xls]Modèle'!", Replacement:=Range("$R$21").Value, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
        'Remplacer _controles_trempe.xls]Modèle'! par valeur de la cellule R22
        'qui donnera le nom du fichier et l'onglet en fonction de la date du contrôle
        ActiveCell.Replace What:="_controles_trempe.xls]Modèle'!", Replacement:=Range("$R$22").Value, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
        'Remplacer _controles_qualité.xls]Modèle'! par valeur de la cellule R23
        'qui donnera le nom du fichier et l'onglet en fonction de la date du contrôle
        ActiveCell.Replace What:="_controles_qualité.xls]Modèle'!", Replacement:=Range("$R$23").Value, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
        ' Même opération jusqu'à la ligne 36
        Next x
     
    End Sub
    Merci pour vos réponses et merci d'être aussi réactifs sur ce forum car les problèmes et solutions exposées sont très utiles pour une débutante comme moi !

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

Discussions similaires

  1. [XL-2000] Validation contenu cellule (saisie + fonction)
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2009, 14h27
  2. [Delphi 7 Windows XP] Valider une cellule dans DBGrid
    Par alainvh dans le forum Débuter
    Réponses: 4
    Dernier message: 27/11/2008, 17h26
  3. Comment forcer une validation de cellule?
    Par Nixar dans le forum VB.NET
    Réponses: 8
    Dernier message: 25/07/2007, 09h38
  4. Paste in value et validation de cellule
    Par Capsule dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/01/2007, 13h06
  5. Validation de cellule dans DBGrid
    Par alainvh dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/11/2006, 16h41

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