Petits soucis

danaxia

XLDnaute Nouveau
Bonjour à vous menbre du forum; Voilà Je trouve pas à quoi fait la référence
Downs car je suis en création d'un formulaire de saisie, et j'arrive débocage
Selection.End(x1Dows).Select souligné en jaune.:confused:
Merci de votre aide. Dan

Je remet un fichier zip c'est celui qui est le complet et toujours les mêmes erreurs, Merc de votre aide Dan
PS : Il me fait tourner en bourrique ce classeur, il me reste à mettre le bouton pour affficher le formulaire?
Bon dimanche
 

Pièces jointes

  • lListe_Audiosforum.zip
    8.7 KB · Affichages: 16
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Petits soucis

Bonjour Danaxia, Jean-Marcel, bonjour le forum,

Il y avait d'autres problèmes dans ton code Danaxia. Quand tu lances la macro à partir d'un bouton qui se trouve sur un onglet, tu ne peux pas faire une sélection dans un autre onglet sans précéder la plage par le nom de cet autre onglet. Même si tu l'as sélectionné au préalable...
Exemple :
Code:
Sheets("Base de Donnée").Select
Range("A1").Select
va planter sur la deuxième ligne ! il faut
Code:
Sheets("Base de Donnée").Select
Sheets("Base de Donnée").Range("A1").Select
ou
Code:
With Sheets("Base de Donnée")
     .Select
     .Range("A1").Select
End With

Je te propose ton code modifié (pense à déclarer tes variables) :
Code:
Private Sub CommandButton1_Click()
Dim ligne_active_base As Long 'déclare la variable ligne_active_base
 
Application.ScreenUpdating = False 'masque les changements à l'écran
'transpose_dans_tableau()
'atteindre le formulaire et mémoriserles données
'le bouton est déjà dans cet onglet, inutile de le spécifier...
Range("B1:B7").Copy
'Test pour déterminer la ligne ou coller les infos dans le tableau
With Sheets("Base de données") 'prend en compte l'onglet "Base de données"
    .Select 'sélectionne l'onglet
    If .Range("A2").Value = "" Then 'condition : si A2 est vide
        ligne_active_base = 2 'définit la variable ligne_active_base (A2)
    Else 'sinon
        'définir la variable ligne_active_base (première cellule vide rencontrée dans la colonne A)
        ligne_active_base = .Range("A1").End(xlDown).Offset(1, 0).Row
    End If 'fin de la condition
    'Collage avec transposition
    .Range("A" & ligne_active_base).PasteSpecial Transpose:=True
End With
'Rendre vierge le formulaire
With Sheets("Formulaire")
    .Select
    .Range("B1:B7").ClearContents
    .Range("B1").Select
End With
'Retourner dans le tableau
    With Sheets("Base de données")
        .Select
        .Range("A1").Select
    End With
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub
 
Dernière édition:

danaxia

XLDnaute Nouveau
Re : Petits soucis

Bonjour Danaxia, Jean-Marcel, bonjour le forum,

Il y avait d'autres problèmes dans ton code Danaxia. Quand tu lances la macro à partir d'un bouton qui se trouve sur un onglet, tu ne peux pas faire une sélection dans un autre onglet sans précéder la plage par le nom de cet autre onglet. Même si tu l'as sélectionné au préalable...
Exemple :
Code:
Sheets("Base de Donnée").Select
Range("A1").Select
va planter sur la deuxième ligne ! il faut
Code:
Sheets("Base de Donnée").Select
Sheets("Base de Donnée").Range("A1").Select
ou
Code:
With Sheets("Base de Donnée")
     .Select
     .Range("A1").Select
End With

Je te propose ton code modifié (pense à déclarer tes variables) :
Code:
Private Sub CommandButton1_Click()
Dim ligne_active_base As Long 'déclare la variable ligne_active_base
 
Application.ScreenUpdating = False 'masque les changements à l'écran
'transpose_dans_tableau()
'atteindre le formulaire et mémoriserles données
'le bouton est déjà dans cet onglet, inutile de le spécifier...
Range("B1:B7").Copy
'Test pour déterminer la ligne ou coller les infos dans le tableau
With Sheets("Base de données") 'prend en compte l'onglet "Base de données"
    .Select 'sélectionne l'onglet
    If .Range("A2").Value = "" Then 'condition : si A2 est vide
        ligne_active_base = 2 'définit la variable ligne_active_base (A2)
    Else 'sinon
        'définir la variable ligne_active_base (première cellule vide rencontrée dans la colonne A)
        ligne_active_base = .Range("A1").End(xlDown).Offset(1, 0).Row
    End If 'fin de la condition
    'Collage avec transposition
    .Range("A" & ligne_active_base).PasteSpecial Transpose:=True
End With
'Rendre vierge le formulaire
With Sheets("Formulaire")
    .Select
    .Range("B1:B7").ClearContents
    .Range("B1").Select
End With
'Retourner dans le tableau
    With Sheets("Base de données")
        .Select
        .Range("A1").Select
    End With
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub

Vraiment un grand merci à toi robert tu es le meilleur, passe un bon dimanche.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Petits soucis

Bonjour le fil, bonjour le forum,

Ho p... ! Danaxia mort de rire... J'peux plus mettre mon chapeau de paille tellement j'ai pris du melon avec ton compliment... Bon dimanche à toi aussi.
 

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof