Macro pour changer de cellule si déjà occupée.

Fermé
Ana - Modifié par Ana le 3/09/2014 à 15:43
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 3 sept. 2014 à 17:59
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 :


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:

3 réponses

eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
Modifié par eriiic le 3/09/2014 à 16:25
Bonjour,

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
2
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 39
3 sept. 2014 à 16:34
Merci pour cette variante, mais sans explication à un débutant ça risque le plantage....

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...
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
3 sept. 2014 à 17:59
par exemple en B16...
C'est un exemple, Je suppose donc qu'elle veut ajouter en-dessous de la dernière utilisée.
0
Normad Messages postés 112 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 juin 2015 39
3 sept. 2014 à 16:05
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.

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
1
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
0