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 :

Erreur code formule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    logisticien
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : logisticien

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Par défaut Erreur code formule
    Bonjour à tous,

    Je débute en VBA et j'ai fait une macro simple :

    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
    Sub MAJSuiviValo()
    '
    ' MAJSynth Macro
    '
     
    Dim noColonne As Integer
     
    Dim moisAfaire As String
    Dim mois As String
     
     
    Sheets("Suivi_Valo").Activate
     
    moisAfaire = Sheets("PasAPas").Range("B1")
     
    noColonne = "=MATCH(moisAfaire,Suivi_Valo!R[2])"
    mois = Cells(3, noColonne)
     
        Columns(noColonne - 1).Select
        Selection.Copy
        Columns(noColonne).Select
        ActiveSheet.Paste
     
        Range("H3,H17,H26,H40,H49,H63") = mois
         Columns(noColonne - 1).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
    End Sub
    J'utilise la formule index pour trouver un numéro de colonne. Il semble que cela buggue sur Suivi_Valo!R[2]. Pouvez-vous me dire ce qui ne va pas et comment améliorer ? Merci bcp.

    Max

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim noColonne As Integer
    noColonne = "=MATCH(moisAfaire,Suivi_Valo!R[2])"
    Ces deux lignes sont incompatibles : tu définis noColonne comme une variable de type Integer mais tu mets dedans une chaine de caractères.
    C'est sûr qu'elle ne va pas être d'accord.

    Lis ça : https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    Utilise plutôt la balise code (bouton #) que la balise quote pour mettre ton code, c'est plus lisible
    Il semble que cela buggue
    Merci d'être plus précis, un message d'erreur ? si oui lequel, si non quel est le probleme ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim noColonne As Integer
    noColonne = "=MATCH(moisAfaire,Suivi_Valo!R[2])"
    Tu affecte du texte a une variable integer, je suppose que tu voulais lui affecter le résultat de la formule dans ce cas intéresse toi à la méthode worksheetfunction.match

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    logisticien
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : logisticien

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Par défaut
    Bonjour,

    Merci de votre réponse. Voici désormais mon code. A l'exécution, j'ai une erreur 1004, impossible de lire la propriété Match de la class worksheetFunction. Je vois que la valeur affectée à moisAfaire est bien la bonne. Pour info, lorsque je fais la fonction sous Excel hors VBA, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV(PasAPas!B1;Suivi_Valo!A3:N3)
    . Merci de vos conseils

    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
    Sub MAJSuiviValo()
    '
    ' MAJSynth Macro
    '
     
    Dim noColonne As Integer
    Dim MaPlage As Range
     
    Dim moisAfaire As String
    Dim mois As String
     
     
    Sheets("Suivi_Valo").Activate
    Set MaPlage = Range(Cells(3, 1), Cells(3, 14))
    moisAfaire = Sheets("PasAPas").Range("B1")
     
    noColonne = WorksheetFunction.Match(moisAfaire, MaPlage)
    mois = Cells(3, noColonne)
     
        Columns(noColonne - 1).Select
        Selection.Copy
        Columns(noColonne).Select
        ActiveSheet.Paste
     
        Range("H3,H17,H26,H40,H49,H63") = mois
         Columns(noColonne - 1).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
    End Sub

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Commence par déclarer et typer la variable moisAfaire et par préciser la propriété de l'objet range que tu lui affectes

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    logisticien
    Inscrit en
    Mai 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : logisticien

    Informations forums :
    Inscription : Mai 2016
    Messages : 7
    Par défaut
    Bonjour,

    Désolé je débute et ne m'en sors pas. Je pensais avoir bien déclaré moisAfaire vu que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim moisAfaire As String
    Pourtant quand je regarde la valeur affectée à moisAfaire lorsque j'exécute la macro, c'est bien la bonne valeur.

    Max

  7. #7
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Bonjour

    C'est assez bizarre, il semblerait que la plage de recherche doit etre sur une colonne seulement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ggg()
    Dim noColonne As Variant
    Dim myrange As Range
     
    Set myrange = ActiveSheet.Range("A1:A3")
    noColonne = Application.WorksheetFunction.Match(1, myrange, 0)
    If IsError(noColonne) Then MsgBox "err1"
     
    Set myrange = ActiveSheet.Range("A1:B3")
    noColonne = Application.WorksheetFunction.Match(1, myrange, 0)
    If IsError(noColonne) Then MsgBox "err2"
     
    End Sub
    et en faisant le test sous Excel, la fonction Equiv ne trouve pas non plus si la plage de recherche est A1:B3 alors que la valeur cherchée est bien en A1

    Je n'avais jamais remarqué et pourtant j'utilise cette fonction souvent, mais j'ai toujours du rechercher sur une colonne

    Merci pour l'info

Discussions similaires

  1. erreur code renommer table
    Par milielf dans le forum Access
    Réponses: 7
    Dernier message: 13/07/2006, 12h30
  2. Réponses: 6
    Dernier message: 09/06/2006, 00h19
  3. erreur code pour désactiver molette souris.
    Par rangernoir dans le forum Access
    Réponses: 2
    Dernier message: 27/09/2005, 10h14
  4. [CR] erreur code de touche incorrect ??
    Par CAPPE dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 09/05/2005, 16h52
  5. Réponses: 4
    Dernier message: 09/05/2003, 16h20

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