VB6 Macro sous Excel à la fin de mes lignes Inscrit un Texte

cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 25 mai 2006 à 14:59
hossam20004 Messages postés 1 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 26 mai 2006 - 26 mai 2006 à 17:08
Salut... J'ai un petit problème avec une commande qui m'a été suggérée....

Voici le problème...

Quand je fais mon Macro.... j'ai 10 lignes à modifier (par exemple). Mais il se peut que j'aille plus que 10 lignes à modifier. Donc, je fais comme si j'avais 100 lignes à modifier....
Mon Macro sera utilisé pour faire la conversion de Coordonnées géographique et l'utilisateur peut faire la conversiton de 1 à 100 coordonnées.

Le bug c'est qu'avec cette commande qui m'a été suggéré:
ActiveSheet.Cells( Range("A1").End(xlDown).Row+1, 1).Value="&PMGNCMD.END*3D"

Ca va écrire à la ligne 101 mais je dois avoir ce texte à la première ligne vide. En d'autres mots, si j'ai 10 lignes alors à la ligne 11 (Colonne A) j'ai le texte écrit "="&PMGNCMD.END*3D" ". Si j'ai 42 lignes alors à la lignes 43 (Colonne A) j'ai le texte "="&PMGNCMD.END*3D" " d'écrit

Si quelqu'un peut m'aider...

merci d'avance

9 réponses

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
25 mai 2006 à 15:37
Salut,

Je n'ai pas tout compris mais j'ai l'impression que c'est le fait de ne pas savoir à l'avance le nombre de ligne.
As-tu essayé la fonction equiv qui peut éventuellement te renvoyer la dernière ligne remplie... ?

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
25 mai 2006 à 15:58
Je crois que tu as saisi l'essentiel... héhéhéhéh

Ok je ne m'y connais pas dutout dans VBA c'est la premiere fois que j'essais de jouer avec ca....

La fonction EQUIV....:
Je viens de regarder ca et on dirait que c'est du numérique cette fonction... (elle utilise du numérique)
Moi quand j'arrive à la fin de mon Macro mes valeurs qui se trouve uniquement dans ma Colonne A sont du Texte....
Si je peux utiliser cette fonction.. Comme je fais....
Bref je ne saisi pas trop cette fonction....

Peux-tu me donner un exemple pour que je puisse vraiment voir comment s'écrit le code en VBA...

Merci à toi...:)
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
25 mai 2006 à 20:52
En fait, l'idée est de mettre dans une cellule dans ta feuille un formule qui va chercher la première cellule vide de ta colonne :
Voici un exemple : ouvre un nouveau classeur et mets dans la colonne A les valeurs suivantes :
<colgroup><col style= \"WIDTH: 60pt\" width=\"80\" /></colgroup>----
efzf, ----
gerge, ----
erg, ----
gdfs, ----
gdfg, ----
dfg, ----
dfg, ----
dfg, ----
gd, ----
fsg, ----
dg

Ensuite dans une autre cellule, tu mets cette formule : =EQUIV( "" ;A:A;-1)  ----> ça donne 11 magique !
Traduction : EQUIV(Le texte que tu recherche à savoir rien ; la colonne ds laquelle tu cherches ; une option de recherche).
Inconvéniant de cette méthode : ton fichier excel source doit avoir cette formule initialement (tu peux éventuellement la coder en dynamique)...

Pour finir, tu mets dans ta macro une boucle sur la valeur de cette cellule du genre for i = 1 to 'la cellule' et tu codes ce que tu veux dedans.

Voilà. J'espère que c'est comprensible. Si ça ne te convient pas, il y a d'autres solutions.

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
25 mai 2006 à 21:47
Rebonjour....

Et bien ton explicatione st assez clair...
Je n'ai que 2 questions...

1. Pourquoi ca donne 11.
   Je saisi qu'il y a 11 lignes dans le fichier, mais je ne saisi pas pourquoi le "-1" dans la formule donne 11. J'aurais vu un NB pour compter le nombre de cellule ayant des chiffres mais dans la formule il y a un "-1" ?????

2. Je suis déçu de te demander cela... mais c'est quoi coder en dynamique.

J'attends de tes nouvelles....

P.S. ta méthode semble très intéressante....
0

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

Posez votre question
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
25 mai 2006 à 22:35
Salut,

Alors pour l'histoire du 11 :
la fonction EQUIV permet de faire plusieurs choses. Voici l'aide Excel pour l'explication du dernier argument :
<li>Si la valeur de l'argument type est 1, la fonction EQUIV trouve la valeur la plus élevée qui est inférieure ou égale à celle de l'argument valeur_cherchée. Les valeurs de l'argument matrice_recherche doivent être placées en ordre croissant : ...-2, -1, 0, 1, 2, ..., A-Z, FAUX, VRAI.

</li><li>Si la valeur de l'argument type est 0, la fonction EQUIV trouve la première valeur exactement équivalente à celle de l'argument valeur_cherchée. Les valeurs de l'argument matrice_recherche peuvent être placées dans un ordre quelconque.

</li><li>Si la valeur de l'argument type est -1, la fonction EQUIV trouve la plus petite valeur qui est supérieure ou égale à celle de l'argument valeur_cherchée. Les valeurs de l'argument matrice_recherche doivent être placées en ordre décroissant : VRAI, FAUX, Z-A, ..., 2, 1, 0, -1, -2, ..., et ainsi de suite.

</li><li>Si l'argument type est omis, la valeur par défaut est 1.

</li>Elle permet comme tu peux le voir de faire des recherches sur des valeurs numériques. Pour ton exemple, tu veux trouver la première cellule vide : "la fonction EQUIV trouve la plus petite valeur qui est supérieure ou égale à celle de l'argument valeur_cherchée" : l'astuce est de mettre un champs vide pour valeur_cherchée.

En ce qui concerne le "mais c'est quoi coder en dynamique" :
Pendant l'exécution de ta macro, tu peux coder une ligne qui se chargera d'écrire la fonction dans une cellule. Un truc du genre :
ActiveCell.FormulaR1C1 = "=MATCH(0,C[-2],0)"

Voilà.

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
25 mai 2006 à 23:01
Re moi,
J'ai fais une erreur dans mon code : ActiveCell.FormulaR1C1 = "=MATCH("""",C1,-1)"

Bon courage

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 mai 2006 à 23:23
Salut,
Normalement cette fonction te renvoie la première ligne vide et écris dedans
ActiveSheet.Cells( Range("A1").End(xlDown).Row + 1, 1).Value="&PMGNCMD.END*3D"

Si tu as encore des probs décomposes de cette manière
   Dim LastRow As Long
   
With ActiveSheet.UsedRange
    LastRow = .Range("A1").End(xlDown).Row + 1
    .range("A" & lastrow).Value = "&PMGNCMD.END*3D"
    ' Si c'est une formule utilises .Formula au lieu de .Value
End With

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
26 mai 2006 à 13:13
Salut à vous deux....


Salut Fiko81..


 


Et bien j'avais lu l'aide dans excel et ce n'est toujours pas tres clair pour moi cette formule...


Je comprend une partie mais il y a certain élément qui m'échape...


Comment lui dire qu'à la première ligne vide inscrit un texte spécial et ensuite fait rien


Pour le "Ensuite fait rien" Ca va c'est une boucle, mais le code avant m'échappe toujours...

218510 valtrase
J'ai essayé ton code dans mon Macro et ca fait touours la même chose... Le texte s'inscrit à la ligne 201 et dans mon Macro, dans l'exeplme que j'utilise, je n'ai que 10 lignes et donc il devrait s'inscriure à la ligne 11

****************************************************************
Peut-être que j'oublie de vous spécifier quelque chose  alors voila...
J'ai un fichier texte sur mon c:\ qui se nomme GPS.txt et dans ce fichier j'ai ces informations

----------------------------------------------------------------------------------
Rect (MTM NAD83) --> Géo  (    NAD83)
No pts           Latitude      Longitude        Alt.      Fus.PCode         
----------------------------------------------------------------------------------
1               46,133281      73,314188       208,7          8 12            
2               46,132294      73,324095         221          8 12            
3               46,123932      73,352983       222,5          8 12            
4               46,130076      73,330474186,209336921629          8 35            
5               46,124772      73,324475205,914275040015          8 61            
6               46,130670      73,325633177,534790322313          8 6             
7               46,125774      73,324040210,385123621258          8 35            
8               46,125783      73,330002184,504111984823          8 61            
9               46,130080      73,330445185,778669340568          8 59            
10              46,125671      73,331015186,763087986199          8 59
96              46,121000      73,331015186,763087986199          8 59
97              46,120000      73,331015186,763087986199          8 59   
98              46,120010      73,331015186,763087986199          8 59   
99              46,120001      73,331015186,763087986199          8 59                

Voilà le code de mon Macro.
P.S. les ligne sen gras sont les ligne que je veux modifier. Pour le moment j'inscris le texte dans une cellule où l'utilisateur fera un couper/coller à la dernière ligne.

Merci encore...

Sub GPS()
'
' GPS Macro
' Macro enregistrée le 2006-05-25 par Jeff Cantin
'
' Touche de raccourci du clavier: Ctrl+w
'
    ChDir "C:"
    Workbooks.OpenText Filename: = _
        "C:\GPS.txt", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(16 _
        , 1), Array(25, 1), Array(31, 1), Array(40, 1), Array(56, 1), Array(61, 1), Array(63, 1), _
        Array(64, 1), Array(66, 1), Array(68, 1), Array(70, 1))
    Rows("1:4").Select
    Selection.Delete Shift:=xlUp
    Columns("G:G").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll ToRight:=2
    Columns("J:J").Select
    Selection.ClearContents
    Columns("I:I").Select
    Selection.Cut
    Columns("H:H").Select
    ActiveSheet.Paste
    Columns("K:K").Select
    Selection.Cut
    Columns("J:J").Select
    ActiveSheet.Paste
    Range("I1").Select
    ActiveCell.FormulaR1C1 = _
        "= IF(AND(RC[-1]="""",RC[1]=""""),"" "",IF(RC[-1]="""",RC[1],RC[-1]))"
    Range("I1").Select
    Selection.AutoFill Destination:=Range("I1:I200"), Type:=xlFillDefault
    Range("I1:I200").Select
    ActiveWindow.ScrollRow = 1
    Application.CommandBars("Clipboard").Visible = False
    Columns("I:I").Select
    Selection.Copy
    Range("I1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Columns("H:H").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Columns("J:J").Select
    Selection.ClearContents
    Columns("E:E").Select
    Selection.ClearContents
    Columns("C:C").Select
    Range("C2").Activate
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Columns("B:B").Select
    Range("B2").Activate
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","" "",((ABS(INT(RC[-1]*100)-(RC[-1]*100))*100)/60)*1000)"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]="" "","" "",ROUND(RC[-1],0))"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]<10,""00""&RC[-1],IF(RC[-1]<100,""0""&RC[-1],RC[-1]))"
    Range("G1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]="" "","" "",CONCATENATE((LEFT(RC[-4],5))*100&""."",RC[-1]))"
    Range("D1:G1").Select
    Selection.AutoFill Destination:=Range("D1:G200"), Type:=xlFillDefault
    Range("D1:G200").Select
    ActiveWindow.ScrollRow = 1
    Range("I1").Select
    ActiveWindow.SmallScroll Down:=-6
    ActiveWindow.SmallScroll ToRight:=4
    ActiveWindow.SmallScroll Down:=-3
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","" "",((ABS(INT(RC[-1]*100)-(RC[-1]*100))*100)/60)*1000)"
    Range("I1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","" "",((ABS(INT(RC[-1]*100)-(RC[-1]*100))*100)/60)*1000)"
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]="" "","" "",ROUND(RC[-1],0))"
    Range("K1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]<10,""00""&RC[-1],IF(RC[-1]<100,""0""&RC[-1],RC[-1]))"
    Range("L1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]="" "","" "",CONCATENATE((LEFT(RC[-4],5))*100&""."",RC[-1]))"
    Range("I1:L1").Select
    Selection.AutoFill Destination:=Range("I1:L200"), Type:=xlFillDefault
    Range("I1:L200").Select
    ActiveWindow.ScrollRow = 1
    Columns("L:L").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Columns("H:K").Select
    Range("K1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("G:G").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Columns("C:F").Select
    Range("F1").Activate
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.LargeScroll ToRight:=-1
    Columns("A:A").Select
    Selection.Cut
    Range("G1").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll ToRight:=2
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "'$PMGNWPL,"
    Range("J2").Select
    ActiveCell.FormulaR1C1 = "',N,0"
    Range("J3").Select
    ActiveCell.FormulaR1C1 = "',W,0000275,M,"
    Range("J4").Select
    ActiveCell.FormulaR1C1 = "',a*2d"
    Range("J5").Select
    ActiveWindow.SmallScroll ToRight:=-2
    Columns("C:G").Select
    Selection.Cut
    Range("D1").Select
    ActiveSheet.Paste
    Range("A1").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[3]="" "","" "",CONCATENATE(R1C10,RC4,R2C10,RC5,R3C10,RC[7]&"","",RC[5],R4C10))"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A200"), Type:=xlFillDefault
    Range("A1:A200").Select
    ActiveWindow.ScrollRow = 1
    Columns("A:A").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Columns("B:K").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "$PMGNCMD,END*3D"
End Sub
0
hossam20004 Messages postés 1 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 26 mai 2006
26 mai 2006 à 17:08
bonjour ,
je suis entrin de créer une application de bon de commande ,et mnt je veux savoir cooment je vai creer un compte des utilisateur avec les droit d'acces


j'espere q qlq un m'aide,vraiment c urgent
0
Rejoignez-nous