Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Selection une plage pour supprimer le contenu

  • Initiateur de la discussion Initiateur de la discussion patdev
  • 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 !

P

patdev

Guest
Bonjour,
Voila je suis newbies en VBA. j'essaie de selectionner une plage de cellule d'une feuille à partir des coordonnées d'une cellule d'une autre feuille :

' Coordonnées de la cellule selectionner
Dim Col As Integer
Col = ActiveCell.Column
Dim Lig As Integer
Lig = ActiveCell.Row ' Vérification : MsgBox Col
Range(Cells(Lig, Col), Cells(Lig, Col - 1)).ClearContents
Sheets("Feuil2").Select
Dim Col_pdej As Integer
Col_pdej = Col + 25 ' Vérification : MsgBox Col_pdej
Range(Cells(Lig, Col - 1), Cells(Lig, Col_pdej)).ClearContents


les instruction passe bien sur la 1er feuille, mais sur la feuille suivante la selection ne se fait pas ???
Pourriez vous m'aider ?
 
Re : Selection une plage pour supprimer le contenu

Bonjour patdev et bienvenu sur le forum,
Pourrais tu expliquer "un poil" plus le problème rencontré, voir poster un fichier exemple avec des indications (moins de 50 Ko et annonyme, pas de N° de téléphonne, de nom de famille, de nom d'entreprise...)
On peut commencer par
Code:
Sub Test()
Range(ActiveCell.Address, ActiveCell.Offset(0, -1)).ClearContents

End Sub
Cordialement
 
Re : Selection une plage pour supprimer le contenu

Bonjour,

Pour la feuille 2:

Code:
With Sheets("Feuil2") 'indique que l'on travaillera sur la feuille 2
 
Dim Col_pdej As Long 'Les numéro de lignes sont de type LONG
Col_pdej = Col + 25 
'Mettre les '.' devant les Range et les Cells pour indiquer qu'ils appartiennent à la feuille2.
.Range(.Cells(Lig, Col - 1), .Cells(Lig, Col_pdej)).ClearContents
End With

A+
 
Re : Selection une plage pour supprimer le contenu

Merci de ton aide,

l'idée est de selectionner une cellule dans la feuille "patient" (son nom) et d'effacer le contenu des cellule s'y rapportant dans les autres feuilles également.

Le code :
Range(ActiveCell.Address, ActiveCell.Offset(0, -1)).ClearContents

fonctionne dans l'onglet patient mais la suite me pose soucis, les valeurs de variable passe bien mais la selection de la plage "Range(Cells(Lig, Col - 1), Cells(Lig, Col_pdej))." ne se fait pas.
 

Pièces jointes

Re : Selection une plage pour supprimer le contenu

Re à Tous,
Trop tard mais comme je l'ai fait, je le poste... Toute les feuilles seront néttoyées.
Pour le bouton:
Code:
Private Sub CommandButton1_Click()
Var_Patient = ActiveCell.Offset(0, -3).Value
Range(ActiveCell, ActiveCell.Offset(0, -1)).ClearContents
For Each F In ThisWorkbook.Worksheets
    If F.Name <> "patient" Then
        For i = 4 To F.Range("A" & Application.Rows.Count).End(xlUp).Row
            If F.Cells(i, 1).Value = Var_Patient Then F.Range("B" & i & ":AD" & i).ClearContents
        Next i
    End If
Next F
End Sub
En macro au double click dans la colonne E ("nom")(à mettre dans le code la feuille patient):
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("E4:E65536")) Is Nothing Then
Cancel = True
Var_Patient = ActiveCell.Offset(0, -3).Value
Range(ActiveCell, ActiveCell.Offset(0, -1)).ClearContents
For Each F In ThisWorkbook.Worksheets
    If F.Name <> "patient" Then
        For i = 4 To F.Range("A" & Application.Rows.Count).End(xlUp).Row
            If F.Cells(i, 1).Value = Var_Patient Then F.Range("B" & i & ":AD" & i).ClearContents
        Next i
    End If
Next F
End If
End Sub
Cordialement
 
Re : Selection une plage pour supprimer le contenu

Re,

@PatDev, pour répondre à ton avant dernier message, je te propose:

Code:
Private Sub CommandButton1_Click()
    Dim Idx As Variant    'Doit être variant
    Dim ref As Variant    'Doit être variant les ref sont des numérique ou des string
    ref = Cells(ActiveCell.Row, 2)    'On enregistre la référence de la chambre
    With Sheets("petits_dèj")    'Travailler sur la feuil2
        'Utiliser la fonction de feuille de calcul EQUIV (MATCH) pour
        'Retrouver l'index de la ligne sur la feuille 2
        lig = Application.Match(ref, .Range("A:A"), 1)
        'Si la fonction ne retourne pas une valeur d'erreur
        '(c'est pourquoi sa variable doit être de type variant)
        If Not IsError(lig) Then
            'on vide le contenu de la ligne (29 colonnes)
            .Cells(lig, 1).Resize(, 29).ClearContents
            MsgBox "La ligne de la ref " & lig & " a été éffacée"
        Else
            MsgBox "La ligne de la ref " & lig & " n'a pas étée trouvée!"
        End If
        'On vide le contenu de la feuille (colonne An:Bn) qui contient la reférence de chambre
        Cells(ActiveCell.Row, 1).Resize(, 2).ClearContents
    End With
End Sub

En remplacement de ton code.

A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
2 K
Réponses
2
Affichages
466
Réponses
3
Affichages
919
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
448
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…