geraldvc
Messages postés13Date d'inscriptionjeudi 23 août 2007StatutMembreDernière intervention22 décembre 2008
-
5 mars 2008 à 16:58
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
12 mars 2008 à 00:44
Bonjour voici ma macro j’ai un souci .je lui demande de mettre certaine donnée en, ligne dans le champ BDadressse la impeccable mais quand je lui demande de changer de feuille et de le mètre en colonne, jusque là ok mais il m’efface ce qui est dans la cellule et donc ne trouve pas ma première ligne vide !
Sub Entrée()
FormAd.Hide
Application.ScreenUpdating = False
Range("BDAdresse").Activate
En_colonne = ActiveCell.Column
En_ligne = ActiveCell.Row + 1
While Not IsEmpty(ActiveCell.Value)
Cells(En_ligne, En_colonne).Activate
En_ligne = En_ligne + 1
Wend
If FormAd.Madame.Value True Then Titre "Madame" If FormAd.Monsieur.Value True Then Titre "Monsieur" If FormAd.Mademoiselle.Value True Then Titre "Mademoiselle"
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Titre
With Range("BDAdresse")
En_colonne = .Column 'attention au point car il est essentiel
En_ligne = .Row
End With
' peut etre est-ce ici que tu fais la recherche de ligne vide ? si oui ce n'est pas terrible comme methode mais bon !
While Not IsEmpty(Cells(En_ligne, En_colonne).Value)
En_ligne = En_ligne + 1
Wend
cela accelere considerablement le code
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 10 mars 2008 à 09:57
Ça ne réglera probablement pas ton problème, mais bon...
Une variable (comme En_colonne) ne peut contenir 2 valeurs simultanément.
Lorsque tu écris
En_colonne = ActiveCell.Column
En_colonne = ActiveCell.Row + 1
seule la valeur est prise en compte.
Lorsque tu écris ceci
Cells(En_colonne, En_colonne).Activate
En_colonne = En_colonne + 1
les 2 valeurs seront incrémentées, donc ton curseur sera déplacée d'une ligne vers le bas, puis d'une colonne vers la droite. Descente en diagonale...
Utilise 2 variables pour Ligne et Colonne ou utilise une constante pour la colonne. Si tu veux lire la colonne "B", mets un 2 en guise de colonne.
Évite aussi d'utiliser les Select
Ceci ne doit pas fonctionner... ça dot générer une erreur, je pense
ActiveCell.Offset(1, 1).Range("A1").Select
ActiveCell.Value = FormAd.nbr1
Essaie plutôt comme ceci
ActiveCell.Offset(1, 1) = FormAd.nbr1
ou encore
Cells(Ligne + 1, Colonne + 1) = FormAd.nbr1
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
geraldvc
Messages postés13Date d'inscriptionjeudi 23 août 2007StatutMembreDernière intervention22 décembre 2008 10 mars 2008 à 11:07
Merci mille fois de me donner un coup de main <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
Voila si j’ai bien compris j’ai changer la valeur de +1 en +2 et rien ne change
Je t’explique ce qui se passe :
Donc je demande à mon NBR1 de ce placer dans la feuille « donnee » et aller en B2 ,jusque là impeccable ça marche, mais quand je lui rajoute un article ou nombre de l’article il devrais aller en B3 et il retourne en B2 Donc m’efface mon premier nombre !