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 :

VBA Problème de syntaxe [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Par défaut VBA Problème de syntaxe
    Bonjour,

    Comme toute personne venant ici j'aurais besoin d'explication .
    Voilà la situation dans laquelle je me trouve, j'ai deux tableaux dans mon onglet Feuil1 sous Excel et je veux transférer les valeurs de la deuxième colonne de mon tableau1 dans la deuxième colonne de mon tableau2 lorsque les premières colonne de ces deux tableaux sont égaux.

    Exemple:

    Tableau1-----------------Tableau2
    Colonne1-Colonne2-------Colonne1-Colonne2
    ---A--------12--------------A
    ---B--------10--------------D
    ---C--------45--------------A
    ---D--------0---------------B

    Donne:

    Tableau1-----------------Tableau2
    Colonne1-Colonne2-------Colonne1-Colonne2
    ---A--------12--------------A--------12
    ---B--------10--------------D--------0
    ---C--------45--------------A--------12
    ---D--------0---------------B--------10

    J'ai donc créé la macro suivante:

    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 RetrancrireValDefaut()
     
    Dim ValDefaut As Range
    Dim ValARemplir As Range
    Dim CptDefaut As Integer
    Dim CptARemplir As Integer
     
    With Worksheets("Feuil1")
     
        ValDefaut = .Range("A2").Value
        ValARemplir = .Range("W2").Value
        CptDefaut = 2
        CptARemplir = 2
     
        While Not (ValARemplir = "")
            While ((ValARemplir <> ValDefaut) Or (ValDefaut <> ""))
                CptDefaut = CptDefaut + 1
                ValDefaut = .Cells(1, CptDefaut).Value
            Wend
            If (ValDefaut = ValARemplir) Then
                .Cells(24, CptARemplir).Value = .Cells(2, CptDefaut).Value
            End If
            CptARemplir = CptARemplir + 1
            ValARemplir = .Cells(23, CptARemplir).Value
        Wend
     
    End With
     
    End Sub
    Le problème comme je l'ai indiqué dans le titre et que je ne connais pas vraiment la syntaxe du VBA j'ai donc regardé un certain nombre d'exemple, mais malgré tous je n'arrive pas à comprendre ce qui ne va pas.
    Je supposais que le problème venait du with Worksheets("Feuil1") mais lorsque je l’enlève le problème persiste et en plus la syntaxe .Range ou .Cells ne doit plus être correcte si je l'enlève (pas sûr).
    Bref si vous pouviez m'aider sur la syntaxe (si vous voyez une erreur dans l'algorithme on est pas obligé de la laisser non plus ).

    L'erreur lors de la compilation et erreur d'éxécution 91 Variable objet ou variable du bloc with non définie.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    juste une question :

    pourquoi le faire en VBA, surtout lorsque l'on n'y connait rien,
    alors qu'une simple formule de calcul pourrait s'en charger ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Par défaut
    Si c'est réalisable avec une formule ça me va très bien, mais je ne vois pas comment.
    Le VBA étant un langage de programmation cela me semblais plus simple de programmer que d'utiliser les formules d'Excel que je ne connais pas non plus .

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Comment ? Rien qu'en lisant l'aide Excel de la fonction RECHERCHEV par exemple …

    Pour le tableau 1 commençant en A2 et le tableau 2 en E2, formule à saisir donc en F2 :

    =RECHERCHEV(E2;A:B;2;FAUX)


    Si cela ne convient pas, relocaliser cette discussion dans le forum Excel.


    A savoir : pour faire plus simple en VBA, souvent y sont utilisées les fonctions internes de feuilles de calcul …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 14
    Par défaut
    Merci la formule fait effectivement ce que je voulais, cependant je ne sais pas pourquoi j'ai une autre formule (un produit) qui utilise la colonne2 de mon tableau2, mais elle ne prend pas en compte les valeurs automatiquement remplies qui sont visible cependant dans mes cellules Excel.
    Je vais donc mettre le sujet en résolu, merci pour votre aide, si vous avez une idée d'où vient mon nouveau problème on peut voir ça en MP (La colonne1 du tableau2 et remplie lors de l'importation d'un fichier xml).
    Merci encore.

    Édit: Second problème résolu la fonction RECHERCHEV() me retourner une chaine et non un entier je l'ai donc converti avec CNUM()

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Le but de ce forum est de faire progresser tout à chacun, donc pas de question en MP …

    Le mieux est d'ouvrir une nouvelle discussion dans le forum adéquat en y effectuant
    une présentation claire & exhaustive : c'est fou parfois le nombre de solutions récoltées !

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

Discussions similaires

  1. VBA Problème de syntaxe - manipulation graphique Excel
    Par JeanDan dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/10/2011, 11h15
  2. [SQL/ACCESS/VBA]problème de compréhension de syntaxe
    Par satch24 dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/06/2007, 17h18
  3. VBA Problème de syntaxe
    Par Wanted_Gulli dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/05/2007, 17h51
  4. [VBA-EXCEL] Selection d'une colonne, problème de syntaxe
    Par legillou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/02/2007, 15h09
  5. [VBA-Excel] Problème de syntaxe pour lien hypertexte
    Par matt8-5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2007, 12h23

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