Ecrire dans une msgbox le contenu d'une sélection

tico06

XLDnaute Nouveau
Bonjour a tous,

Plus que novice en VBA est après de nombreuses recherches infructueuses je cherche a écrire dans une msgbox le contenu des cellules B,C,D,E,F,G de la ligne que j'ai sélectionnée avant de l'effacer.
Merci d'avance pour votre aide

Voici mon code
VB:
Sub EffaceLigneTableau1()

With Selection

    If .Columns.Count > 50 And Selection.Row > 5 Then 

        If msgbox("Confirmez-vous la supression de la ligne", vbYesNo + vbCritical, "Suppression ligne") = vbYes Then
            ActiveSheet.Rows(ActiveCell.Row).EntireRow.Delete
        End If

    Else
        msgbox "Veuillez sélectionner une ligne compléte" & vbLf & "Les lignes 1 à 4 ne sont pas autorisées", vbInformation, "Information"
    End If
End With

End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
non en fait c'est plus complexe que cela
ces deux argument sont variant
il peuvent représenter tout deux l'index respectivement (ligne,colonne )
mais il représente aussi un complément d'information de l'autre

ainsi

ligne=index(tableau,4,0) veux dire ligne 4 entière
colonn=index(tableau,0,4) veux dire colonne 4 entière
et
index (tableau,4,1) veux dire tableau(4,1)c'est un item

voila comment il faut l'interpréter
index ou complément d'information dans la formulation elle même

;)
 

tico06

XLDnaute Nouveau
Merci a tous pour vos réponse grâce a elle je me rapproche de ce que je souhaite faire.
Danielco aprés une nuit a chercher en vain et afin d'améliorer encore un peu plus le truc est 'il possible de récupérer le texte de l’entête du tableau correspondant a la ligne sélectionnée afin que la msgbox affiche ces deux éléments ?

Merci d'avance pour vos réponses

ci dessous mon code modifié :

VB:
Sub EffaceLigneTableau2()

With Selection
    
    If .Columns.Count > 50 And .Columns.Count > 1 And Selection.Row > 5 Then
    
    
        Dim L As Long, Txt As String, i As Byte
        L = Selection.Row
        For i = 2 To 4
        Txt = Txt & Chr(10) & Cells(L, i)
        Next i
        If MsgBox(Txt, vbYesNo + vbCritical, "Suppression ligne") = vbYes Then
        
        If MsgBox("Confirmez-vous la supression de la ligne " & Selection.Row, vbYesNo + vbCritical, "Suppression ligne") = vbYes Then
        
        ActiveSheet.Rows(ActiveCell.Row).EntireRow.Delete
        End If
        End If
        
    Else
        MsgBox "Veuillez sélectionner :" & vbLf & "Qu'une seulle ligne" & vbLf & "Les lignes 1 à 4 ne sont pas autorisées", vbInformation, "Information"
    End If
End With
 

patricktoulon

XLDnaute Barbatruc
ceci te donne le texte des entetes de colonne d'un tableau structuré de la cellule active

VB:
Sub test()
    Dim t$, headerange As Range
    On Error GoTo errh
    Set headerange = Range(ActiveCell.ListObject.Name & "[#Headers]")
    t = Join(WorksheetFunction.Index(headerange.Value, 1, 0), vbCrLf)
    MsgBox t
    Exit Sub
errh:
    MsgBox "la cellule active n'est pas dans un tableau structuré"
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonsoir
je pige pas vraiment ta demande mais bon
VB:
Private Sub CommandButton1_Click()
    Dim t$, headerange As Range
    On Error GoTo errh
    Set headerange = Range(ActiveCell.ListObject.Name & "[#Headers]")
    Set bodyrange = Range(ActiveCell.ListObject.Name)
  
    
    
    textentete = Join(WorksheetFunction.Index(headerange.Value, 1, 0), vbCrLf)
    
    
    ligneDuTableau = ActiveCell.Row - headerange.Row 'trouve l'index de ligne du tableau et non celui du sheet
    
    textevaleurligne = Join(WorksheetFunction.Index(bodyrange.Value, ligneDuTableau, 0), vbCrLf)
     MsgBox textentete & vbCrLf & textevaleurligne
  
    
    Exit Sub
errh:
    MsgBox "la cellule active n'est pas dans un tableau structuré"
End Sub
 

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400