Aide débutant VBA excel [Résolu]

Signaler
-
Messages postés
5
Date d'inscription
mercredi 1 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2014
-
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

Messages postés
32858
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 juin 2021
350
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
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
Messages postés
5
Date d'inscription
mercredi 1 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2014

Bonjour merci de vos réponses je viens juste de voir vos réponses. j'essaie et je vous dit le résultat
Messages postés
5
Date d'inscription
mercredi 1 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2014

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 )
Messages postés
5
Date d'inscription
mercredi 1 octobre 2014
Statut
Membre
Dernière intervention
4 décembre 2014

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