Macro Excel
Résolu
MacrExcil
-
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
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:
- Macro Excel
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
7 réponses
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
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
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
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
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 :
dans un autre exemple, je cache la macro
avec un argument bidon.
et comme suggéré par Frippons, j'effectue la
conversion [ CNum ] ~ [ Val ].
Lupin
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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
re:
Voici ce que ça me donne :
et voici la transformation que j'en fais :
toujours dans le but d'éviter un [ Select ] lorsque non requis.
Lupin
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