besoin d'un expert en vba

S

steve

Guest
j'ai crée cette macro afin de selectionner un client dans ma base de donnée l'archiver sur une autre feuille et ensuite d'effacer toutes les données qui ne m'interesse plus sans pour autant supprimer les nombreuses formules qui sont dans plusieurs colonnes
mon probleme est que au niveau de union.range je suis limité par le nombre de cellule a selectionner et je ne trouve pas de solution. en effet j'ai environ 80 colonnes a selectionner avant de les effacer. pouvez vous m'aider merci.


Sub archivage_automatique()

premligne_don = InputBox('Vous voulez archiver un client ? Entrer son N° de ligne', , 2)
premligne_don = premligne_don * 1

If réponse <> 7 Then
Sheets(1).Select
Rows(premligne_don).Select
Selection.Copy
Sheets(2).Activate
Range('a9').Activate
ActiveCell.End(xlDown).Activate
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
End If
Sheets(1).Select
premligne_don = InputBox('Votre client a bien été archivé dans la feuille Archive. Entrer son numéro de ligne pour le supprimer de la base de données Client', , 2)
premligne_don = premligne_don * 1

If réponse <> 7 Then
Sheets(1).Select
End If
Dim r As Long
r = Selection.Row
With ActiveSheet
Union(.Range( 'a'& r), .Range('e' & r)).Select
Application.CutCopyMode = False
Selection.ClearContents
End With

End Sub

Merci de m'aider.
 
R

Robert

Guest
Bonjour Steve, bonjour le forum,

Je suis pas sûr d'avoir tout bien compris mais je te propose ça :

Sub archivage_automatique()
Dim premligne_don As String 'déclare la variable premligne_don
Dim l As Long 'déclare la variable l
Dim cel As Range 'déclare la variable cel

'définit la variable premligne_don
premligne_don = InputBox('Vous voulez archiver un client ? Entrer son N° de ligne', , 2)

Sheets(1).Select 'sélectionne l'onglet 1

'condition si le bouton annuler n'est pas cliqué
If premligne_don <> '' Then
l = CLng(premligne_don) 'définit la variable l
'copie et colle la ligne renseignée
Rows(l).Copy Destination:=Sheets(2).Range('A9').End(xlDown). _
Offset(1, 0)
End If 'fin de la condition

'redéfinit la variable l
premligne_don = InputBox('Votre client a bien été archivé dans la feuille Archive. Entrer son numéro de ligne pour le supprimer de la base de données Client', , l)
l = CLng(premligne_don) 'redéfinit la variable l

'condition : si le bouton 'Annuler' est cliqué
If premligne_don = '' Then
Exit Sub 'sort de la procédure
End If 'fin de la condition

'boucle sur toute les cellules de la ligne l
For Each cel In Range(Cells(l, 1), Cells(l, 256).End(xlToLeft))
'condition : si la cellule ne contient pas de formules
'efface le contenu de la cellule
If cel.HasFormula = False Then cel.ClearContents
Next cel 'prochaine cellule de la boucle
End Sub

À plus,

Robert
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 004
Membres
104 003
dernier inscrit
adyady__