OVH Cloud OVH Cloud

Comment convertir une macro excel en VBA

14 réponses
Avatar
deeperpaul
Bonjour pouvez-vous m'aider à convertir cette macro en VBA (je ne comprends
pas l'anglais):

Enregistrement1 (a)
=POSER.VALEUR(qte_E;0)
=POSER.VALEUR(qte_S;0)

=OUVRIR("d:\privé\plmat\INT\Entrees.xls")
=SELECTIONNER("L2C1")
=OUVRIR("d:\privé\plmat\INT\Sorties.xls")
=SELECTIONNER("L2C1")
=TANT.QUE(CELLULE.ACTIVE()<>"")
=SELECTIONNER("lc10")
=TANT.QUE(CELLULE.ACTIVE()="OK")
=SELECTIONNER("l(1)c")
=SUIVANT()
=SELECTIONNER("lc5")
=CELLULE.ACTIVE() (NumSerie)
=SELECTIONNER("lc8")
=CELLULE.ACTIVE() (qte_S)

=ACTIVER("Entrees.xls")
=SI(RECHERCHER.SELECTION(NumSerie;1;2;1;1;FAUX))
=SELECTIONNER(DECALER(CELLULE.ACTIVE();0;6;;))
=ACTIVER("Sorties.xls")
=SELECTIONNER("lc1")
=COPIER()
=ACTIVER("Entrees.xls")
=COLLER()
=SELECTIONNER(DECALER(CELLULE.ACTIVE();0;1;;))
=ACTIVER("Sorties.xls")
=SELECTIONNER("lc2")
=COPIER()
=ACTIVER("Entrees.xls")
=COLLER()
=SELECTIONNER("lc9")
=CELLULE.ACTIVE() (qte_E)
=FORMULE(qte_E-qte_S)

=ACTIVER("Sorties.xls")
=SELECTIONNER("lc10")
=FORMULE("OK")
=FIN.SI()
=SELECTIONNER("l(1)c1")
=POSER.VALEUR(qte_E;0)
=POSER.VALEUR(qte_S;0)


=SUIVANT()
=ACTIVER("Entrees.xls")
=SELECTIONNER("l1c1")

=RETOUR()


Merci beaucoup.

4 réponses

1 2
Avatar
Michel Gaboly
Bonsoir Paul,

Juste une légère correction :

Pour le dernier argument, VRAI ne signifie pas que le texte doit être e n majuscule, mais que la recherche doit être
sensible à la casse :

Avec l'argument à VRAI, si on cherche "Paul", "paul", ou "pAul" ne sero nt pas détectés, tandis qu'avec l'argument à
FAUX, toutes ces chaînes de caractères seront jugées équivalentes

Bonjour à tous,

Mon petit grain de sel totalement théorique car j'ai pas le temps de faire
plus pour l'instant:

=SI(RECHERCHER.SELECTION(NumSerie;1;2;1;1;FAUX))


SI()
permet de faire un test et d'executer la suite si le test est positif
uniquement

RECHERCHER.SELECTION()
recehrche un texte dans la feuille en cours
les paramètres:
1er: ce qu'on cherhce
2ème: où cad 1 dans formules, 2 dans valeurs et 3 dans commentaires
3ème: Comment defini l'integrite cad 1 en entier ou 2 par partie
4ème: Par cad 1 lecture par ligne, 2 lecture par colonne
5èmè : sens cad 1 vers le bas et 2 vers le haut
6ème majuscule ou non, cad vrai traite un texte en majuscuile et faux les
autres cas.

Les deux derniers sont facultatifs





--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Paul V
Salut Michel,

je suis tout pret à te croire mais j'ai un leger doute.

Si ma mémoire est bonne, cet argument mis à Vrai spécifie que la recherche
se fait bien sur des majuscules uniquement et sans distinction de casse s'il
est à Faux.
Si ma mémoire est encore bonne; il me sembnle que c'était une approximations
dans l'aide d'Excel qui m'avait joué quelques tours.
Mais je ne suis pas sur du tout que ma mémoire est bonne.
A+

Paul V


"Michel Gaboly" a écrit dans le message de news:

Bonsoir Paul,

Juste une légère correction :

Pour le dernier argument, VRAI ne signifie pas que le texte doit être en
majuscule, mais que la recherche doit être
sensible à la casse :

Avec l'argument à VRAI, si on cherche "Paul", "paul", ou "pAul" ne seront
pas détectés, tandis qu'avec l'argument à
FAUX, toutes ces chaînes de caractères seront jugées équivalentes

Bonjour à tous,

Mon petit grain de sel totalement théorique car j'ai pas le temps de faire
plus pour l'instant:

=SI(RECHERCHER.SELECTION(NumSerie;1;2;1;1;FAUX))


SI()
permet de faire un test et d'executer la suite si le test est positif
uniquement

RECHERCHER.SELECTION()
recehrche un texte dans la feuille en cours
les paramètres:
1er: ce qu'on cherhce
2ème: où cad 1 dans formules, 2 dans valeurs et 3 dans commentaires
3ème: Comment defini l'integrite cad 1 en entier ou 2 par partie
4ème: Par cad 1 lecture par ligne, 2 lecture par colonne
5èmè : sens cad 1 vers le bas et 2 vers le haut
6ème majuscule ou non, cad vrai traite un texte en majuscuile et faux les
autres cas.

Les deux derniers sont facultatifs





--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Michel Gaboly
Salut Paul,

C'est bien la sensibilité à la casse, cela équivaut à cocher ou n on l'option "Respecter la casse" du dialogue
rechercher. C'est d'ailleurs logique dans la mesure où les fonctions ma cro sont censées - pour beaucoup d'entre elles -
permettre l'équivalent de ce qui se fait manuellement dans Excel. Or un e recherche "Tout majuscule" n'est pas proposée
hors macros.

Je viens de faire un test sous Excel 2004 (Mac).


Bonne soirée.


Salut Michel,

je suis tout pret à te croire mais j'ai un leger doute.

Si ma mémoire est bonne, cet argument mis à Vrai spécifie que la recherche
se fait bien sur des majuscules uniquement et sans distinction de casse s'il
est à Faux.
Si ma mémoire est encore bonne; il me sembnle que c'était une appro ximations
dans l'aide d'Excel qui m'avait joué quelques tours.
Mais je ne suis pas sur du tout que ma mémoire est bonne.
A+

Paul V


"Michel Gaboly" a écrit dans le message de news:

Bonsoir Paul,

Juste une légère correction :

Pour le dernier argument, VRAI ne signifie pas que le texte doit être en
majuscule, mais que la recherche doit être
sensible à la casse :

Avec l'argument à VRAI, si on cherche "Paul", "paul", ou "pAul" ne se ront
pas détectés, tandis qu'avec l'argument à
FAUX, toutes ces chaînes de caractères seront jugées équivalent es

Bonjour à tous,

Mon petit grain de sel totalement théorique car j'ai pas le temps de faire
plus pour l'instant:

=SI(RECHERCHER.SELECTION(NumSerie;1;2;1;1;FAUX))
SI()

permet de faire un test et d'executer la suite si le test est positif
uniquement

RECHERCHER.SELECTION()
recehrche un texte dans la feuille en cours
les paramètres:
1er: ce qu'on cherhce
2ème: où cad 1 dans formules, 2 dans valeurs et 3 dans commentaire s
3ème: Comment defini l'integrite cad 1 en entier ou 2 par partie
4ème: Par cad 1 lecture par ligne, 2 lecture par colonne
5èmè : sens cad 1 vers le bas et 2 vers le haut
6ème majuscule ou non, cad vrai traite un texte en majuscuile et fau x les
autres cas.

Les deux derniers sont facultatifs








--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
michel
Bonjour deeperpaul
Juste une question idiote
Que veux tu faire ? aprendre VBA ou faire marcher ta macro.
Parce que Excel accepte toujours les macros excel4. Clic droit sur l'onglet
nom de feuille et insertion /Macro excel 4
ensuite tu copie ta macro tu nomme tes cellules et basta
@plus
--
Michel
"deeperpaul" a écrit dans le message
de news:
Bonjour et merci Michel,

et pour les fonctions suivantes, peux tu me les traduire :

=SI(RECHERCHER.SELECTION(NumSerie;1;2;1;1;FAUX))
=FORMULE(qte_E-qte_S)

Merci et à +


Bonjour
D'apres mes souvenirs d'excel4 quelques precisions
=TANT.QUE(CELLULE.ACTIVE()<>"")
While Activecell <> ""


=SUIVANT()
Loop

Avec while j'utiliserais plutot Wend pour traduire suivant


=SUIVANT()
Wend



et pour
ÎLLULE.ACTIVE() (qte_S)
ActiveCell = qte_S '????

dans excel4 on nomme qte_s la cellule (macro) et on recupere dedans le


contenu de la cellule active donc
qte_S¬tivecell.value
Pour les poser.valeur
=POSER.VALEUR(qte_E;0)
=POSER.VALEUR(qte_S;0)
qte_E=0



qte_S=0
Pas la peine de nommer on utilise des variables
HTH
--
Michel
"deeperpaul" a écrit dans le
message
de news:
Merci JLuc, tu m'as déjà beaucoup dépanner. Cette macro a été écrite
sous
Excel 5.

En fait, j'ai un fichier Entrees:
Date, BE, CodeArt, Design, Numserie,Qte,etc...

et un fichier Sorties:
Date, BS,CodeArt, Design, Numserie,Qte,etc...

je voudrais donc les comparés, afin de gérer le stock.




*Bonjour deeperpaul*,
Je veux bien te donner un coup de main, mais il faudrai que tu
précises
un peu plus ce que tu veux faire

Bonjour pouvez-vous m'aider à convertir cette macro en VBA (je ne
comprends
pas l'anglais):

Enregistrement1 (a)
C'est quoi : Enregistrement1 (a) ?


Poser quelle valeur et où ?
=POSER.VALEUR(qte_E;0)
=POSER.VALEUR(qte_S;0)

=OUVRIR("d:privéplmatINTEntrees.xls")
Workbooks.Open("d:privéplmatINTEntrees.xls")


=SELECTIONNER("L2C1")
Range("A2").Select


=OUVRIR("d:privéplmatINTSorties.xls")
Workbooks.Open("d:privéplmatINTSorties.xls")


=SELECTIONNER("L2C1")
Range("A2").Select


=TANT.QUE(CELLULE.ACTIVE()<>"")
While Activecell <> ""


=SELECTIONNER("lc10")
Cells(Activecell.Row, 10).Select


=TANT.QUE(CELLULE.ACTIVE()="OK")
While Attivecell = "OK"

=SELECTIONNER("l(1)c")
Activecell.Offset(1,0).Select


=SUIVANT()
Loop

=SELECTIONNER("lc5")
Cells(ActiveCell.Row, 5).Select


ÎLLULE.ACTIVE() (NumSerie)
ActiveCell = NumSerie '????


=SELECTIONNER("lc8")
Cells(ActiveCell.Row, 8).Select


ÎLLULE.ACTIVE() (qte_S)
ActiveCell = qte_S '????


¬TIVER("Entrees.xls")
Workbooks("Entrees.xls").Activate


=SI(RECHERCHER.SELECTION(NumSerie;1;2;1;1;FAUX))
If ??? Then


=SELECTIONNER(DECALER(CELLULE.ACTIVE();0;6;;))
ActiveCell.Offset(0, 6).Select


¬TIVER("Sorties.xls")
Workbooks("Sorties.xls").Activate


=SELECTIONNER("lc1")
Cells(ActiveCell.Row, 1).Select


=COPIER()
ActiveCell.Copy


¬TIVER("Entrees.xls")
Workbooks("Entrees.xls").Activate


=COLLER()
ActiveCell.Paste


=SELECTIONNER(DECALER(CELLULE.ACTIVE();0;1;;))
ActiveCell.Offset(0,1).Select


¬TIVER("Sorties.xls")
Workbooks("Sorties.xls").Activate


=SELECTIONNER("lc2")
Cells(ActiveCell.Row, 2).Select


=COPIER()
ActiveCell.Copy


¬TIVER("Entrees.xls")
Workbooks("Entrees.xls").Activate


=COLLER()
ActiveCell.Paste


=SELECTIONNER("lc9")
Cells(ActiveCell.Row, 9).Select


ÎLLULE.ACTIVE() (qte_E)
ActiveCell = qte_E '????


=FORMULE(qte_E-qte_S)
ActiveCell = qte_E - qte_S 'Ne va pas avec instruction au-dessus

!!!


¬TIVER("Sorties.xls")
Workbooks("Sorties.xls").Activate


=SELECTIONNER("lc10")
Cells(ActiveCell.Row, 10).Select


=FORMULE("OK")
ActiveCell = "OK"


=FIN.SI()
End If


=SELECTIONNER("l(1)c1")
Cells(ActiveCell.Row + 1, 1).Select


Poser quelle valeur et où ?
=POSER.VALEUR(qte_E;0)
=POSER.VALEUR(qte_S;0)


=SUIVANT()
Loop


¬TIVER("Entrees.xls")
Workbooks("Entrees.xls").Activate


=SELECTIONNER("l1c1")
Cells(1, 1).Select


=RETOUR()
End Sub





Voila (en gros) ce qu'il faut écrire. Avec tous les points d'ombres

Merci beaucoup.
De rien


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O















1 2