Macro Excel

Résolu
MacrExcil -  
 MacrExcil -
Bonjour,

Je suis novice dans la discipline et souhaiterais de l'aide
J'essaye de bricoler une macro pouvant comparer 2 cellules sur un fichier Excel mais rien ne fait

Dans ma feuille "Feuil1" j'ai la chose suivante:
A1= =gauche(B1;5)=12345
B1= 123456789
C1= 12345
D1= Ø89

Dans ma fenêtre macro j'ai la chose suivante:

Sub Macro1()

If Worksheets("Feuil1").Cells(1, 1).Value = Worksheets("Feuil1").Cells(1, 3).Value Then
Worksheets("Feuil1").Cells(2, 1).Value = Worksheets("Feuil1").Cells(1, 4).Value
End If

End Sub

En principe je devrais avoir après avoir exécuté la macro la chose suivante: A2= Ø89
Seulement j'ai rien dans la cellule car le programme ne voit pas que A1 et C1 sont identiques

Quelqu'un peut m'aider?

MErci,

MacrExcil
Configuration: Windows XP

7 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    La fonction [ Gauche ] renvoie une chaine de caractère et vous comparer du texte avec un chiffre.

    Regarder la position des caractères dans A1, ils sont à gauche et dans C1 ils sont à droite !

    Remplacer la formule dans A1 par :

    A1 = [=CNUM(GAUCHE(B1;5))]

    CNUM pour convertion en numérique.

    Lupin
    1
  2. frippons Messages postés 572 Statut Membre 104
     
    Cela vient du format.

    Je te conseille de passer par des variable temporaire

    du genre:

    Sub Macro1()

    dim varible1(0) as integer
    dim varible2(0) as integer

    variable1(0)=Worksheets("Feuil1").Cells(1, 1).Value
    variable2(0)= Worksheets("Feuil1").Cells(1, 3).Value
    If variable1(0)= variable2(0)Then
    Worksheets("Feuil1").Cells(2, 1).Value = Worksheets("Feuil1").Cells(1, 4).Value
    End If

    erase variable1
    erase variable2

    End Sub
    0
  3. frippons Messages postés 572 Statut Membre 104
     
    Jute pour info, je te conseille de tout programmer dans la macro y compris ta focntion gauche
    0
  4. Utilisateur anonyme
     
    Bonsoir,

    en complément, j'ajouterai ceci ...

    Si vous débuté, j'ajouterai qu'il faut
    bien comprendre qu'il s'agit d'une situation
    de contenant et de contenu.

    Et de façon plus explicit, il s'agit
    de type de contenant et
    de type de contenu.

    Explication:

    Dans excel, à l'ouverture, chaque cellule
    représente un contenant ayant par défaut
    un type de données dit par XL [ Standard ],
    il y a [ Nombre, Monétaire, Date, Heure, ... ].

    En ce qui a trait au contenu de la cellule,
    ça dépend de ce que l'on inscrit, si on inscrit
    une Date, le compilateur effectura une démotion
    de type passant de [ Standard ] à [ Date ].

    Si l'on inscrit une heure, il en sera de même.

    Donc lorsque vous utilisé une fonction d'Excel,
    vous devez impérativement connaître le type de
    la donnée retourné par cette fonction pour le
    manipuler dans le bon sens je dirais.

    Pour recupérer une donnée, il est prudent sous
    certains compilateur comme VBA de forcer explicitement
    certaines promotion démotion de type.

    Dans votre code, vous ne faites qu'une seule
    affectation, sinon vous avez bien fabriqué
    la macro car il n'y as de sélection qu'a l'affectation.

    Autre méthode suggerer :

    Option Explicit
    '
    
    Sub Compare1()
    
        With Worksheets("Feuil1")
            If (.Cells(1, 1).Value = .Cells(1, 3).Value) Then
                .Cells(2, 1).Value = .Cells(1, 4).Value
            End If
        End With
        
    End Sub
    '
    


    dans un autre exemple, je cache la macro
    avec un argument bidon.

    et comme suggéré par Frippons, j'effectue la
    conversion [ CNum ] ~ [ Val ].

    Sub Compare2(Optional ByVal Indice As Long)
    
        With Worksheets("Feuil1")
            If (Val(.Cells(1, 1).Value) = Val(.Cells(1, 3).Value)) Then
                .Cells(2, 1).Value = .Cells(1, 4).Value
            End If
        End With
    
    End Sub
    '
    

    Lupin
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MacrExcil
     
    Bonjour,

    je vous remercie Lupin et Frippons pour votre aide et votre clair voyance...
    Je n'ai pas la science infuse en programmation et dieu seul sait que je ne l'aurai jamais... mais j'y travaille.

    MErci beaucoup pour votre aide.
    MacrExcil
    0
  7. MacrExcil
     
    Bonjour,

    nouveau challenge....

    je cherche à coder sous macro la formule suivante dans la case A1 = [=CNUM(GAUCHE(B1;5))]
    je ne trouve pas de commandes ou formules toute faite.

    Un petit coup de main ne serait pas de refus.

    Merci,
    MacrExcil.
    0
    1. Utilisateur anonyme
       
      Re :

      Alors, quelques base sur le "how to do".

      1.) Spécification de(s) la donnée(s)
      Une formule connu sous Excel à coder en VBA

      2.) Lancer l'enregistreur de macro
      // Menu Excel / Outils / Macros / Nouvelle macro...

      --> Une nouvelle barre d'outils apparaît avec un carré,
      le carré c'est pour arrêter l'enregistrement de la macro
      que vous aurai terminer l'inscription de la formule.

      3.) Inscrire la Formule (ou créé la à l'aide de l'assistant)

      4.) Sélectionner une cellule plus loin

      5.) Clic sur le carré de la nouvelle barre d'outils pour arrêter l'enregistreur de macro.

      [ Alt ] [ F11 ],

      Vous rechercher votre nouvelle macro qui devrait être très souvent
      dans un nouveau.

      Ensuite, examiner le code si des instructions vous embête ?

      Copier/coller ici toute la macro, pour avoir une meilleur vue d'ensemble :-)

      Plein d'expert VBA navigue ici sur le site :-)

      Lupin
      0
  8. Utilisateur anonyme
     
    re:

    Voici ce que ça me donne :

    Sub AjouteFormule1()
    
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "=VALUE(LEFT(RC[1],5))"
        Range("A2").Select
    
    End Sub
    '
    


    et voici la transformation que j'en fais :
    Sub AjouteFormule2()
    
        With ActiveSheet
            ActiveCell.Value = "=VALUE(LEFT(B1,5))"
        End With
    
    End Sub
    '
    


    toujours dans le but d'éviter un [ Select ] lorsque non requis.

    Lupin
    0
    1. MacrExcil
       
      Lupin,

      je ne sais quoi dire => GENIAL ca marche....

      MErci et bon weekend, je m'en vais me bidouiller une autre macro ^^!!
      0