Aide débutant VBA excel

Résolu
Dreamsdragons - 1 oct. 2014 à 16:45
Dreamsdragons Messages postés 5 Date d'inscription mercredi 1 octobre 2014 Statut Membre Dernière intervention 4 décembre 2014 - 9 oct. 2014 à 15:46
Bonjour je suis sur Excel 2013 .
j'ai crée un bouton
qui va copier une valeur dans une cellules précise
et la colle en A21
et à chaque fois que je clique
je lui dit de changer en +1 donc A22
cela fonction très bien mais j'aurais aimé simplifier mon code avec une boucle mais cela rempli tout d'un coup
Sub Feuil1_V_Cliquer()
Dim Vi As Range
Dim L As Integer
L = 21
Set Vi = ThisWorkbook.Worksheets("Tarifs").Range("A4")
If Range("A" & L).Value = "" Then
Range("A" & L).Value = Vi.Value
Else
L = L + 1 'A22
If Range("A" & L).Value = "" Then
Range("A" & L).Value = Vi.Value
Else
L = L + 1 'A23
If Range("A" & L).Value = "" Then
Range("A" & L).Value = Vi.Value
Else
L = L + 1 'A24
If Range("A" & L).Value = "" Then
Range("A" & L).Value = Vi.Value
Else
L = L + 1 'A25
If Range("A" & L).Value = "" Then
Range("A" & L).Value = Vi.Value
Else
L = L + 1 'A26
If Range("A" & L).Value = "" Then
Range("A" & L).Value = Vi.Value

End If
End If
End If
End If
End If
End If
End Sub

Donc si une personne pouvez me donné un tuyau

6 réponses

jordane45 Messages postés 38242 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 octobre 2024 345
Modifié par jordane45 le 1/10/2014 à 17:31
Bonjour,

En gros... tu veux simplement trouver L ... étant la première cellule vide qui se trouve entre AL21 et AL26 ?

un truc du genre :

For x=21 to 26
 If Range("A" & x).Value = "" Then
   L=x
  Exit For
 End if
Next
Range("A" & L).Value = Vi.Value



Ou encore plus court...

For x=21 to 26
 If Range("A" & x).Value = "" Then
   Range("A" & x).Value = Vi.Value
  Exit For
 End if
Next




Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
Modifié par ucfoutu le 1/10/2014 à 19:14
Bonjour,
et si tout est plein de A121 à A26 ? Que veux-tu alors faire ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
Modifié par ucfoutu le 1/10/2014 à 20:37
Devrait pouvoir donc s'exprimer ainsi
On Error Resume Next
L = Range("A21:A26").SpecialCells(xlCellTypeBlanks).Row
If Err Then
MsgBox "plus de place": Exit Sub
Else
Range("A" & L).Value = Vi.Value
End If
On Error GoTo 0
--
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Dreamsdragons Messages postés 5 Date d'inscription mercredi 1 octobre 2014 Statut Membre Dernière intervention 4 décembre 2014
9 oct. 2014 à 11:46
Bonjour merci de vos réponses je viens juste de voir vos réponses. j'essaie et je vous dit le résultat
0

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

Posez votre question
Dreamsdragons Messages postés 5 Date d'inscription mercredi 1 octobre 2014 Statut Membre Dernière intervention 4 décembre 2014
Modifié par Dreamsdragons le 9/10/2014 à 12:09
Merci à vous deux vraiment super Sympathique de votre part
j'utilise plus la méthode de ucfoutu même si la deuxième méthode de Jordane45 (fonctionne très bien aussi )
0
Dreamsdragons Messages postés 5 Date d'inscription mercredi 1 octobre 2014 Statut Membre Dernière intervention 4 décembre 2014
9 oct. 2014 à 15:46
Tout compte fait je me suis servi des deux solutions pour mon code final encore merci à vous deux
Voici le résultat :
Sub Bouton_A5_B5_Cliquer()
Dim Nom As Range
Dim Prix As Range

Set Nom = ThisWorkbook.Worksheets("Tarifs").Range("A5")
Set Prix = ThisWorkbook.Worksheets("Tarifs").Range("B5")

For x = 21 To 37
If x = 37 Then
MsgBox "Plus de place": Exit Sub
Else
If Range("A" & x).Value = Nom.Value Then
Range("B" & x).Value = Range("B" & x).Value + 1
Exit Sub
Else
If Range("A" & x).Value = "" Then
Range("B" & x).Value = 1
Range("A" & x).Value = Nom.Value
Exit For
End If
End If
End If
Next
End Sub
0
Rejoignez-nous