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
bonsoir dudu2
elle décape rien du tout elle est très simple

je décante:
Range("B" & ActiveCell.Row).Resize(, 6).value
' te donne un tableau a 2 dimensions (1 ligne et 6 colonnes)

Application.Transpose(Range("B" & ActiveCell.Row).Resize(, 6).value)
'te donne un tableau a 2 dimensions(6 lignes et 1 colonne )


Application.Transpose(Application.Transpose(Range("B" & ActiveCell.Row).Resize(, 6)))
la re transposition de la première transposition
te donne cette fois ci un tableau a 1 DIMENSION!!!!(6 items)

il ne teste plus qu'a faire un join( le tableau , caractère voulu)

c'est pas plus compliqué que cela

et pour définitivement entrer dans le coté obscure de la force en voici une autre

VB:
Dim t$
t = Join(WorksheetFunction.Index(Range("B" & ActiveCell.Row).Resize(, 6).Value, 1, 0), vbCrLf)
MsgBox t

voila la force est en toi :cool: :p ;)

bien que je pourrais te parler de la fonction evaluate pouvant évaluer une formule excel en vba
mais bon je vais pas le faire je tiens a ce que tu garde un peu de peau
va pas tout'décapé'le'toulonnais :p ;)
 

Dudu2

XLDnaute Barbatruc
Merci pour ta réponse.
Ce qui m'étonne c'est que le 2ème Transpose supprime la 2ème dimension, je voyais le Transpose de Transpose comme une opération apparamment nulle mais je te fais confiance sur la véracité de ton explication.
 

patricktoulon

XLDnaute Barbatruc
re
mais je te fais confiance sur la véracité de ton explication.
tu peux
VB:
Sub test2()
MsgBox "B1:G1  :" & UBound(Range("B1:G1").Value) & " ligne " & UBound(Range("B1:G1").Value, 2) & " colonnes"

newtableau = Application.Transpose(Application.Transpose(Range("B1:G1")))
MsgBox "maintenant le tableau fait   :" & UBound(newtableau) & " items c'est un array a une dimension"
' si je fait
'msgbox ubound(newtableau,2)' pour avoir la 2d dimmention(les colonnes) 'on obtient une erreur car il n'y a qu'une dimension

End Sub
 

patricktoulon

XLDnaute Barbatruc
re
je voyais le Transpose de Transpose comme une opération apparemment nulle
c'est parce que comme beaucoup tu a interprété selon ton expérience
a savoir une transposition de cellule verticalement et ou horizontalement
besoins et expérience que tu a sans doute fait au moins une fois

sauf que!!!!!
pour remplir une ligne on peux le remplir avec un array a 1 dimension
exemple range("B1:G1").value=array(1,2,3,4,5,6)
voila ou le défaut d'interprétation que beaucoup font avec le transpose horizontal
car après tout b1:g1 est bien un tableau a 2 dimensions 1 ligne et 6 colonne
pourtant l'array 1 dimension s'y loge tres bien

je sais c'est tordu

comme je disais te voila du coté obscure ;) :cool: :p :D :D :D
pardon pour le scalpe:D;)
 

Dudu2

XLDnaute Barbatruc
Oui, ton test2() je le comprends très bien, sauf que c'est la 1ère fois que je vois qu'on peut obtenir le Ubound de la 1ère dimension sans préciser le 1 dans UBound(Range("B1:G1").Value).
Et je n'ai trouvé nulle part documenté qu'un TRANSPOSE réduit à 1 dimension un tableau à 2 dimensions si la 2ème est 1.
 

patricktoulon

XLDnaute Barbatruc
re
transpose réduit a une dimension horizontal un tableau a 2 dimension de x lignes et 1 colonnes
tout les autre cas de figure les dimensions sont inversées

de meme que application.transpose(array(1,2,3,4,5)) redimensionne l'array en tableau 2 dimensions (5 lignes,1 colonne)

c'est immuable
;)
 

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu