Résolu [Résolu] [Excel/VBA] macro copier / coller avec condition

  • Auteur de la discussion Valou94250
  • Date de début

Valou94250

Nouveau membre
Bonjour à tous,

Voilà je planche depuis une semaine sur l'amélioration d'un fichier excel. Je sollicite votre aide car cela fait 24h que je suis bloquée sur un fichu problème qui pour quelqu'un de moins novice que moi semblera surement très bête; mais voilà, je n'y arrive pas! J'ai consulté plusieurs topics dont , mais rien n'y fait.

Je vous expose donc la situation: j'ai sur ma feuille"macro" une liste déroulante de choix en E8. Celle ci doit être copié sur la feuille "prestation" sur la première cellule vide à partir de B6, sachant que plus bas ma feuille contient une présentation donc je ne peux pas remonter, juste descendre à partir de la case B6.

Voilà mon code:

Code:
Private Sub CommandButton1_Click()

If CheckBox1.Value = True Then

Sheets("macro").Activate
Range("E8").Select
Selection.Copy
Sheets("prestation").Activate
Dim derli As Range
Set derli = Range("B6").End(xlDown).Offset(1)
derli.Select
ActiveSheet.Paste
End If

If CheckBox2.Value = True Then
Sheets("macro").Activate
Range("E9").Select
Selection.Copy
Sheets("prestation").Activate
Dim derli1 As Range
Set derli1 = Range("B6").End(xlDown).Offset(1)
derli.Select
ActiveSheet.Paste

End If

Unload UserForm3

End Sub

Lorsque je lance la macro, et que je coche les 2 cases à cocher, il me colle bien mes listes déroulantes, mais l'une sur l'autre. Et sachant que la plage B6: B14 est constituée de cellules vides il me colle tout ca en B16. Je pense qu'il trouve la première cellule pleine et qu'il colle sur la case du dessous. Je n'arrive pas à décanter mon problème. Quelqu'un aurait une petite piste?

Merci d'avance!
 

Valou94250

Nouveau membre
Après plusieurs tests, j'ai remplacé B6 par B1, les première cellules étant fusionnée le premier B est B5, et souhaitant garder la cellule b5 pour clarifier la présentation, je souhaite commencer à coller qu'en B6. Si B5 est rempli alors il colle bel et bien ma liste de choix en B6. Or je ne veux rien en B5 donc j'ai pensé à quelque chose comme ça:

Code:
Private Sub CommandButton1_Click()
Dim derli As Range
Sheets("prestation").Activate

If Range("B6").Value = "" Then
derli = Range("B6")
Else: Set derli = Range("B1").End(xlDown).Offset(1)
End If



If CheckBox1.Value = True Then
Sheets("macro").Activate
Range("E8").Select
Selection.Copy
Sheets("prestation").Activate
derli.Select
ActiveSheet.Paste
End If


Unload UserForm3

End Sub

Biensur ça aurait été trop beau que ça fonctionne, le code contient une erreur ici : derli = Range("B6")
Mais je ne vois pas pourquoi
 

Valou94250

Nouveau membre
Ayant trouvé mon erreur, il manquait le set devant derli=range("B6"), la formule fonctionne correctement si B6 est vide mais ensuite il écrase les données de la cellule B7 au fur et à mesure.

Code:
Public derli As Range
Public derli1 As Range
Public derli2 As Range


Private Sub CommandButton1_Click()
Sheets("prestation").Activate

If Range("b6").Value = "" Then
Set derli = Range("B6")
Else: Set derli = Range("B1").End(xlDown).Offset(1)
End If


If CheckBox1.Value = True Then
Sheets("macro").Activate
Range("E8").Select
Selection.Copy
Sheets("prestation").Activate
derli.Select
ActiveSheet.Paste
End If


If Range("b6").Value = "" Then
Set derli1 = Range("B6")
Else: Set derli1 = Range("B1").End(xlDown).Offset(1)
End If



If CheckBox2.Value = True Then
Sheets("macro").Activate
Range("E9").Select
Selection.Copy
Sheets("prestation").Activate
derli1.Select
ActiveSheet.Paste
End If

If Range("b6").Value = "" Then
Set derli2 = Range("B6")
Else: Set derli2 = Range("B1").End(xlDown).Offset(1)
End If


If CheckBox3.Value = True Then
Sheets("macro").Activate
Range("E10").Select
Selection.Copy
Sheets("prestation").Activate
derli2.Select
ActiveSheet.Paste

End If
Unload UserForm3

End Sub

Pour palier au problème j'ai tenté d'ajouter des "public range", mais ce n'est pas la solution... Je continue de plancher là dessus. Si quelqu'un à une idée, je suis preneuse!
 

Valou94250

Nouveau membre
Meilleure réponse
J'ai réussis à résoudre mon problème toute seule en incrémentant l'offset en fonction du nombre de case cochées,
Ma solution n'est certainement pas la meilleure mais elle fonctionne!
Bonne journée à tous!
 

zeb

Modérateur
Merci !
(Ce forum est un peu désert la première quinzaine d'Août !)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 125
Messages
6 717 739
Membres
1 586 357
Dernier membre
Peg7
Partager cette page
Haut