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
A voir également:

7 réponses

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
frippons Messages postés 572 Statut Membre 100
 
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
frippons Messages postés 572 Statut Membre 100
 
Jute pour info, je te conseille de tout programmer dans la macro y compris ta focntion gauche
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
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
MacrExcil
 
Lupin,

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

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