VBA perte de valeur apres retour d'une fonct
Zigomato
-
Zigomato -
Zigomato -
Bonjour,
J'ai un petit soucis, sur une macro, je voudrais remplir des cellules d'une feuille de calcul en prenant la première ligne vide. Pour cela, suite clique sur un bouton, j'éxécute une premiere Sub qui permet de déterminer la feuille (là pas de soucis, c'est nécessaire car au final, le classeur possèdera plusieurs feuille sur lesquelles je devrais faire la même manip), j'envoie le nom de feuille sur une sub qui détermine la position de la première cellule vide.
Le soucis intervient maintenant, la valeur de la lig n'est pas renvoyer. et du coup écrit toujours sur la même ligne.
Voici le code du Accueil où je déclare mes variable en publique, je mets juste cette partie pour montrer que j'ai fait :
Option Explicit
Public Lig As Integer
Public Col As Integer
Plusieurs boite de dialogue s'ouvre avec action sur des boutons, le dernier permet d'accéder à ces lignes :
Private Sub Validation_Click()
Set feuille = Worksheets("Techniciens")
Lig = 2
MsgBox ("premier test " & Lig)
Comptage 1, feuille
MsgBox ("Dernier test : " & Lig)
feuille.Cells(Lig, 1) = CreationTech.Grade
feuille.Cells(Lig, 2) = CreationTech.Nom
feuille.Cells(Lig, 3) = CreationTech.Prenom
feuille.Cells(Lig, 4) = DateDuJour
Unload CreationTech
End Sub
les msgBox me permette de voir la valeur dans la variable Lig
Comptage est donc ouvert avec la bonne feuille, voici les code situé sur le premier module dans la sub comptage :
'compte la prochaine ligne vide et renvoi la valeur
Sub Comptage(Lig, feuille)
feuille.Select
Range("A2").Select
' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
Lig = Lig + 1
Selection.Offset(1, 0).Select
Loop
Lig = Lig + 1
MsgBox ("Deuxième test : " & Lig)
End Sub
Le premier test renvoi bien la bonne valeur ainsi que le second en revanche lorsque je reviens sur le code du bouton, le troisième test me renvoi la valeur 2 qui était initialiser avant la sub comptage alors que celle ci , lors du second test, était correct
Je ne sais pas si j'ai été clair
J'ai un petit soucis, sur une macro, je voudrais remplir des cellules d'une feuille de calcul en prenant la première ligne vide. Pour cela, suite clique sur un bouton, j'éxécute une premiere Sub qui permet de déterminer la feuille (là pas de soucis, c'est nécessaire car au final, le classeur possèdera plusieurs feuille sur lesquelles je devrais faire la même manip), j'envoie le nom de feuille sur une sub qui détermine la position de la première cellule vide.
Le soucis intervient maintenant, la valeur de la lig n'est pas renvoyer. et du coup écrit toujours sur la même ligne.
Voici le code du Accueil où je déclare mes variable en publique, je mets juste cette partie pour montrer que j'ai fait :
Option Explicit
Public Lig As Integer
Public Col As Integer
Plusieurs boite de dialogue s'ouvre avec action sur des boutons, le dernier permet d'accéder à ces lignes :
Private Sub Validation_Click()
Set feuille = Worksheets("Techniciens")
Lig = 2
MsgBox ("premier test " & Lig)
Comptage 1, feuille
MsgBox ("Dernier test : " & Lig)
feuille.Cells(Lig, 1) = CreationTech.Grade
feuille.Cells(Lig, 2) = CreationTech.Nom
feuille.Cells(Lig, 3) = CreationTech.Prenom
feuille.Cells(Lig, 4) = DateDuJour
Unload CreationTech
End Sub
les msgBox me permette de voir la valeur dans la variable Lig
Comptage est donc ouvert avec la bonne feuille, voici les code situé sur le premier module dans la sub comptage :
'compte la prochaine ligne vide et renvoi la valeur
Sub Comptage(Lig, feuille)
feuille.Select
Range("A2").Select
' Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
Lig = Lig + 1
Selection.Offset(1, 0).Select
Loop
Lig = Lig + 1
MsgBox ("Deuxième test : " & Lig)
End Sub
Le premier test renvoi bien la bonne valeur ainsi que le second en revanche lorsque je reviens sur le code du bouton, le troisième test me renvoi la valeur 2 qui était initialiser avant la sub comptage alors que celle ci , lors du second test, était correct
Je ne sais pas si j'ai été clair
A voir également:
- VBA perte de valeur apres retour d'une fonct
- Excel retour à la ligne dans une formule - Guide
- Reinstaller windows sans perte de données - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
- Retour à la ligne google sheet ✓ - Forum Bureautique
2 réponses
Bonjour,
Ta variable Lig est publique, donc connue dans tout le programme.
En déclarant ta sub Comptage(Lig, Feuille), tu as créé une nouvelle variable Lig interne à la sub Comptage.
Pour que ça marche déclare ta sub avec seulement le paramètre Feuille
Sub Comptage(Feuille)
.
.
End Sub
et pour appeler la procédure:
Comptage Feuille
;)
Ta variable Lig est publique, donc connue dans tout le programme.
En déclarant ta sub Comptage(Lig, Feuille), tu as créé une nouvelle variable Lig interne à la sub Comptage.
Pour que ça marche déclare ta sub avec seulement le paramètre Feuille
Sub Comptage(Feuille)
.
.
End Sub
et pour appeler la procédure:
Comptage Feuille
;)
Merci, cela fonctionne, une erreur bien débile que je ne vois pas depuis le début et dont je ne trouvais pas de solution sur le net, pour que ce soit complet, j'ai supprimer la ligne :
Lig = Lig + 1
qui est située après le loop
car Selection.Offset(1, 0).Select sélectionne la cellule directement endessous, ce qui créer toujours une ligne vide
Lig = Lig + 1
qui est située après le loop
car Selection.Offset(1, 0).Select sélectionne la cellule directement endessous, ce qui créer toujours une ligne vide