• Initiateur de la discussion Initiateur de la discussion Esox
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Esox

XLDnaute Occasionnel
Bonjour le forum,

J'ai une macro, qui marche bien, affectée à un bouton créé via formulaire.

On m'a conseillé de l'affecter plutot a un bouton créé avec la boite de controle.
Mais avec ce nouveau bouton, elle bloque sur le premier Range : "la méthode select de la classe range a échoué" la ligne est ainsi :"Range("B6").Select"
Auriez vous une explication ?

Merci
 
Re : Blocage sur "Range"

Re bonsoir

Oui désolé, le voici, mais je débute dans les macros, alors elle est surement plus longue qu il ne le faudrait, de plus je n'utilisais que des boutons via formulaire, la macro marche bien si cest un bouton via formulaire mais pas avec boite controle. Merci bcp..

Code:
Private Sub Acceptation_Click()



' défini le nom du fichier de la demande
    ActiveSheet.Unprotect Password:="azerty"
    Range("BA1") = ActiveWorkbook.Name
    
' copie l'onglet "demande" dans l'application "OROr"
    
    Sheets("Demande").Select
    Sheets("Demande").Copy After:=Workbooks("OROr.xls").Sheets(1)

' copie les données hôtel de l'onglet "Demande" sur l'onglet "Résa"

    Sheets("Demande").Select
    Range("K21:M23").Select
    Selection.Copy
    Sheets("Résas").Select
    Range("T2").Select
    ActiveSheet.Paste
    Sheets("Demande").Select
    ActiveWindow.SmallScroll Down:=3
    Range("K25:M25").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Résas").Select
    Range("T5").Select
    ActiveSheet.Paste
    Sheets("Demande").Select
    Range("E3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Résas").Select
    Range("T1").Select
    ActiveSheet.Paste
    
    
' défini les variables
 
    Dim reference As String, info As String, celluleRecherche As Range, memAdresse As String

' repère l'info1 en fonction de la référence1 et incrémente en adéquation la base

With ThisWorkbook.Sheets("Résas")
    reference = .Range("T1")
    info = .Range("S2")
    
    Set celluleRecherche = .Range("A:A").Find(reference, , xlValues, xlWhole)
    If Not celluleRecherche Is Nothing Then
        memAdresse = celluleRecherche.Address
        Do
            celluleRecherche.Offset(0, 11).Value = info
            Set celluleRecherche = .Range("A:A").FindNext(celluleRecherche)
        Loop Until celluleRecherche.Address = memAdresse
    End If
End With

' repère l'info2 en fonction de la référence2 et incrémente en adéquation la base

With ThisWorkbook.Sheets("Résas")
    reference2 = .Range("T1")
    info2 = .Range("S3")
    
    Set celluleRecherche = .Range("A:A").Find(reference2, , xlValues, xlWhole)
    If Not celluleRecherche Is Nothing Then
        memAdresse = celluleRecherche.Address
        Do
            celluleRecherche.Offset(0, 13).Value = info2
            Set celluleRecherche = .Range("A:A").FindNext(celluleRecherche)
        Loop Until celluleRecherche.Address = memAdresse
    End If
End With

' repère l'info3 en fonction de la référence3 et incrémente en adéquation la base

With ThisWorkbook.Sheets("Résas")
    reference3 = .Range("T1")
    info3 = .Range("S1")
    
    Set celluleRecherche = .Range("A:A").Find(reference3, , xlValues, xlWhole)
    If Not celluleRecherche Is Nothing Then
        memAdresse = celluleRecherche.Address
        Do
            celluleRecherche.Offset(0, 6).Value = info3
            Set celluleRecherche = .Range("A:A").FindNext(celluleRecherche)
        Loop Until celluleRecherche.Address = memAdresse
    End If
End With

' efface les infos temporaires ayant servis à définir infos & références

    Columns("T:V").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A1:G1").Select
    ActiveWindow.ScrollColumn = 8
    
' sélectionne le fichier "Demande" source et le ferme
    
    Sheets("Demande").Select
    Windows(Range("BA1").Value).Activate
    ActiveWindow.Close SaveChanges:=False
    Windows("ORor.xls").Activate
    
' sélectionne l'onglet "Demande", le déplace, et le renomme en "Confirmation"

    
    Sheets("Demande").Select
    ActiveSheet.Shapes("Button 1").Select
    Selection.Delete
    Range("J9:M10").Select
    ActiveCell.FormulaR1C1 = "Confirmation"
    
            ' application du tampon d'acceptation
            Range("J31").Value = Now()
            Range("h29").Value = "L' E L O G National accepte cette proposition"
            Range("h31").Value = "LE"
            Range("k32").Value = "par"
    
    
    Sheets("Demande").Select
    Sheets("Demande").Move
    Sheets("Demande").Select
    Sheets("Demande").Name = "Confirmation"
    Cells.Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect Password:="azerty", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells

' envoi et sauvegarde le fichier sous les références d'une confirmation

    
    Application.Dialogs(xlDialogSendMail).Show
    
    ActiveSheet.Unprotect Password:="azerty"
    Cells.Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveWorkbook.Save
    ActiveWindow.Close
    ActiveWorkbook.SaveAs Filename:=Range("Z31"), FileFormat:=xlNormal, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
    Range("A1").Select
    
    
    
End Sub


Stef
 
Re : Blocage sur "Range"

Re

J'ai réduit un peu ton code (dis moi s'il fonctionne toujours )

Mais si tu joignais un fichier xls (zippé) dans ton fil
pourrait tester en grandeur nature d'autres allégements et modification.

Code:
Private Sub Acceptation_Click()
' défini les variables
Dim reference As String, info As String, celluleRecherche As Range, memAdresse As String
' défini le nom du fichier de la demande
ActiveSheet.Unprotect Password:="azerty"
Range("BA1") = ActiveWorkbook.Name
' copie l'onglet "demande" dans l'application "OROr"
Sheets("Demande").Copy After:=Workbooks("OROr.xls").Sheets(1)
' copie les données hôtel de l'onglet "Demande" sur l'onglet "Résa"
Sheets("Demande").Range("K21:M23").Copy Sheets("Résas").Range("T2")
Sheets("Demande").Range("K25:M25").Copy Sheets("Résas").Range("T5")
Sheets("Demande").Range("E3").Copy Sheets("Résas").Range("T1")
' repère l'info1 en fonction de la référence1 et incrémente en adéquation la base
With ThisWorkbook.Sheets("Résas")
    reference = .Range("T1")
    info = .Range("S2")
    Set celluleRecherche = .Range("A:A").Find(reference, , xlValues, xlWhole)
    If Not celluleRecherche Is Nothing Then
        memAdresse = celluleRecherche.Address
        Do
            celluleRecherche.Offset(0, 11).Value = info
            Set celluleRecherche = .Range("A:A").FindNext(celluleRecherche)
        Loop Until celluleRecherche.Address = memAdresse
    End If
End With
' repère l'info2 en fonction de la référence2 et incrémente en adéquation la base
With ThisWorkbook.Sheets("Résas")
    reference2 = .Range("T1")
    info2 = .Range("S3")
    Set celluleRecherche = .Range("A:A").Find(reference2, , xlValues, xlWhole)
    If Not celluleRecherche Is Nothing Then
        memAdresse = celluleRecherche.Address
        Do
            celluleRecherche.Offset(0, 13).Value = info2
            Set celluleRecherche = .Range("A:A").FindNext(celluleRecherche)
        Loop Until celluleRecherche.Address = memAdresse
    End If
End With
' repère l'info3 en fonction de la référence3 et incrémente en adéquation la base
With ThisWorkbook.Sheets("Résas")
    reference3 = .Range("T1")
    info3 = .Range("S1")
    
    Set celluleRecherche = .Range("A:A").Find(reference3, , xlValues, xlWhole)
    If Not celluleRecherche Is Nothing Then
        memAdresse = celluleRecherche.Address
        Do
            celluleRecherche.Offset(0, 6).Value = info3
            Set celluleRecherche = .Range("A:A").FindNext(celluleRecherche)
        Loop Until celluleRecherche.Address = memAdresse
    End If
End With
' efface les infos temporaires ayant servis à définir infos & références
    Columns("T:V").ClearContents
    Range("A1:G1").Select
' sélectionne le fichier "Demande" source et le ferme
    Sheets("Demande").Select
    Windows(Range("BA1").Value).Activate
    ActiveWindow.Close SaveChanges:=False
    Windows("ORor.xls").Activate
' sélectionne l'onglet "Demande", le déplace, et le renomme en "Confirmation"
    Sheets("Demande").Shapes("Button 1").Delete
    Range("J9:M10").ActiveCell = "Confirmation"
    ' application du tampon d'acceptation
    Range("J31") = Now()
    Range("h29") = "L' E L O G National accepte cette proposition"
    Range("h31") = "LE"
    Range("k32") = "par"

    Sheets("Demande").Select
    Sheets("Demande").Move
    Sheets("Demande").Select
    Sheets("Demande").Name = "Confirmation"
    Cells.Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect Password:="azerty", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlUnlockedCells

' envoi et sauvegarde le fichier sous les références d'une confirmation
    Application.Dialogs(xlDialogSendMail).Show
    ActiveSheet.Unprotect Password:="azerty"
    Cells.Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveWorkbook.Save
    ActiveWindow.Close
    ActiveWorkbook.SaveAs Filename:=Range("Z31"), FileFormat:=xlNormal, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False
    Range("A1").Select
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
575
Retour