Macro pour changer de cellule si déjà occupée.
Ana
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour !
Je suis actuellement en CDD dans une petite entreprise, et l'on m'a demandé de créer une macro dans le but de remplir un tableau de chiffre d'affaires plus facilement. Cela fait trois ans que j'ai quitté les bancs de l'école donc je suis un peu plus que rouillée...
Il faudrait que lorsque mon supérieur saisi la somme, par exemple en B16, elle s'affiche (simple vous me direz). J'ai tout de suite pensé à InputBox. Mais la fois suivante il faudrait que la somme qu'il saisira s'affiche en B17 ! (déjà moins simple là pour moi)
J'ai déjà écrit ceci :
La partie avec le With m'a été conseillée par un ami, je n'ai jamais vu cela en cours, mais elle ne marche pas à première vue.
Je vais m'inscrire ce soir sur le site donc plus d'anonyme après.
Je vous remercie d'avance,
Anaïs
Je suis actuellement en CDD dans une petite entreprise, et l'on m'a demandé de créer une macro dans le but de remplir un tableau de chiffre d'affaires plus facilement. Cela fait trois ans que j'ai quitté les bancs de l'école donc je suis un peu plus que rouillée...
Il faudrait que lorsque mon supérieur saisi la somme, par exemple en B16, elle s'affiche (simple vous me direz). J'ai tout de suite pensé à InputBox. Mais la fois suivante il faudrait que la somme qu'il saisira s'affiche en B17 ! (déjà moins simple là pour moi)
J'ai déjà écrit ceci :
Sub montantHT()
Dim valht As Integer
With ThisWorkbook.Worksheets("Analyse MS & CA")
valht = InputBox("Saisissez le CA HT du mois en cours : ")
Range("B36") = valht
If Range("B36") Is Not Null Then
Range("b37") = valht
End If
End With
End Sub
La partie avec le With m'a été conseillée par un ami, je n'ai jamais vu cela en cours, mais elle ne marche pas à première vue.
Je vais m'inscrire ce soir sur le site donc plus d'anonyme après.
Je vous remercie d'avance,
Anaïs
A voir également:
- Macro pour changer de cellule si déjà occupée.
- Changer dns - Guide
- Excel cellule couleur si condition texte - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Changer de carte graphique - Guide
- Changer wifi chromecast - Guide
3 réponses
Bonjour,
autre proposition :
S'assure que la saisie est bien un nombre et le colle sous la dernière ligne occupée de B.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
autre proposition :
Sub montantHT() Dim derlig As Long With Worksheets("Feuil1") derlig = .Cells(Rows.Count, "B").End(xlUp).Row .Cells(derlig + 1, "B") = Application.InputBox("Saisissez le CA HT du mois en cours : ", Type:=1) End With End Sub
S'assure que la saisie est bien un nombre et le colle sous la dernière ligne occupée de B.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Bonjour,
Alors le With peut être utile, mais là il n'est pas utilisé dans les lignes qui suivent (il faut un point un début de ligne lorsqu'on fait référence au With pour éviter de repréciser). Pour la déclaration de vahlt, c'est mieux de passer en Long qu'en Integer, sinon un Chiffre d'affaire de 50'000 génèrera une erreur.
Voilà le code corrigé en partant de l'idée qu'on remplira la cellule vide à partir de B36 en descendant chaque fois d'une ligne.
Alors le With peut être utile, mais là il n'est pas utilisé dans les lignes qui suivent (il faut un point un début de ligne lorsqu'on fait référence au With pour éviter de repréciser). Pour la déclaration de vahlt, c'est mieux de passer en Long qu'en Integer, sinon un Chiffre d'affaire de 50'000 génèrera une erreur.
Voilà le code corrigé en partant de l'idée qu'on remplira la cellule vide à partir de B36 en descendant chaque fois d'une ligne.
Sub montantHT()
Dim valht As Long, Ligne As Long, Test As String
Ligne = 36
With ThisWorkbook.Worksheets("Analyse MS & CA")
Test = .Range("B" & Ligne).Value
While Test <> ""
Ligne = Ligne + 1
Test = .Range("B" & Ligne).Value
Wend
valht = InputBox("Saisissez le CA HT du mois en cours : ")
.Range("B" & Ligne).Value = valht
End With
End Sub
J'étais 'un petit peu' loin effectivement... mais maintenant j'ai compris, même si quelques termes restent encore obscurs.
Merci beaucoup à vous deux ! Après avoir terminé mes écritures comptables, j'ai passé l'après-midi dessus !!! *pleure de joie*
Encore merci et en vous souhaitant une agréable fin d'après-midi !
Anaïs
Merci beaucoup à vous deux ! Après avoir terminé mes écritures comptables, j'ai passé l'après-midi dessus !!! *pleure de joie*
Encore merci et en vous souhaitant une agréable fin d'après-midi !
Anaïs
1) La feuille "Feuil1" ne correspond pas au nom donné par Ana
2) la première cellule vide entre B1 et B35 sera utilisée alors qu'elle veut démarrer à B36
Par contre, bien vu pour le , Type:=1 dans le InputBox qui contrôle qu'on a bien un nombre tapé dans l'InputBox .
Dans ma solution, j'essayé de corrigé la Macro donnée sans la refaire complètement et en respectant sa logique...
C'est un exemple, Je suppose donc qu'elle veut ajouter en-dessous de la dernière utilisée.