Bonjour le Forum.
Grace à Robert, membre actif du forum, j'ai pu résoudre mon problème ( et comprendre un peu mieux la syntaxe VBA ) de déplacement de donnée (avec cut) vers une autre partie de la base, avec Condition à l'arrivée: si une ligne est déjà occupée, le transfert se fasse sur une autre ligne disponible. Son code :
Private Sub CommandButton1_Click()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable CEL (cellule de DESTination)
Set O = Worksheets("Base") 'définit l'onglet O
Set PL = O.Range("A33") 'définit la plage PL
Set DEST = O.Cells(Application.Rows.Count, "E").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première cellule vide de la colonne E de l'onglet O)
PL.Copy DEST 'copie la plage PL dans DEST
PL.ClearContents 'efface la plage PL
End Sub
Le code fonctionne bien. Entre temps j'ai changé la structure de ma base de donnée ( les déplacement étaient horizontaux ) pour plus de lisibilité. Je voudrais déplacer la ligne sur le même type de code, sauf que je souhaiterai un déplacement vertical ( range "A33"- comme cité dans l'exemple - vers "A2020" par exemple ) au lieu de déplacer de colonne ( en "E" comme cité dans l'exemple )
ma plage de destination de cellules disponibles serait "A2030" par exemple.
j'essaie d'adapter le code mais la logique est différente ( déplacement vertical au lieu d'horizontal )
Un moyen d'adapter le code sur ma nouvelle base de donnée ?
Bien à vous
Michel
Grace à Robert, membre actif du forum, j'ai pu résoudre mon problème ( et comprendre un peu mieux la syntaxe VBA ) de déplacement de donnée (avec cut) vers une autre partie de la base, avec Condition à l'arrivée: si une ligne est déjà occupée, le transfert se fasse sur une autre ligne disponible. Son code :
Private Sub CommandButton1_Click()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable CEL (cellule de DESTination)
Set O = Worksheets("Base") 'définit l'onglet O
Set PL = O.Range("A33") 'définit la plage PL
Set DEST = O.Cells(Application.Rows.Count, "E").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST (première cellule vide de la colonne E de l'onglet O)
PL.Copy DEST 'copie la plage PL dans DEST
PL.ClearContents 'efface la plage PL
End Sub
Le code fonctionne bien. Entre temps j'ai changé la structure de ma base de donnée ( les déplacement étaient horizontaux ) pour plus de lisibilité. Je voudrais déplacer la ligne sur le même type de code, sauf que je souhaiterai un déplacement vertical ( range "A33"- comme cité dans l'exemple - vers "A2020" par exemple ) au lieu de déplacer de colonne ( en "E" comme cité dans l'exemple )
ma plage de destination de cellules disponibles serait "A2030" par exemple.
j'essaie d'adapter le code mais la logique est différente ( déplacement vertical au lieu d'horizontal )
Un moyen d'adapter le code sur ma nouvelle base de donnée ?
Bien à vous
Michel