Selectionner un RANGE

Bonjour

J'aimerais sélectionner la valeur de plusieurs cellules selon la quantité obtenu dans un range de d'autre cellules.

Exemple, si ma valeur dans le RANGE J2:J44 est egale ou plus petite que "0"
If my CELLS <=0 in range ("J2:J44") = true

cela me donne les valeurs de "B" et "C" de cette ligne
then return the value in colums "B" and "C" in that row

Je mets tous les valeurs ensemble dans une seule cellule
and concatenante them for one selection value.

J'ai de la misère surtout a organiser le VBA ecrit. Je le formule verbalement, mais pour l’écrire c'est une aventure pour moi. Chacun son metier.

Merci a l'avance pour votre aide

Bonjour et bienvenue

Prépare un fichier avec une dizaine de lignes et la réponse attendue.

Amicalement

Nad

Bonjour Nad

Je joint un fichier.

J'ai mis quelque explication en rouge pour être le plus clair possible.

Le fichier contient déjà un VBA pour envoyer via e-mail le résultat obtenu.

Merci

11selection.xlsm (42.11 Ko)

Re

Je ne comprends pas les quantités inscrites en colonne M - Ça restera du manuel ou un calcul est à faire ?

Pour la colonne L :

Sub Prepare()
Application.ScreenUpdating = False
Dim c As Range
Dim derlg As Integer

derlg = Range("A65536").End(xlUp).Row

For Each c In Range("J2:J" & derlg)
If c <= 0 Then
c.Offset(0, 2) = c.Offset(0, -8) & " " & c.Offset(0, -7)
End If
Next c
End Sub

Amicalement

Nad

Bonjour Nad

Cela fonctionne parfaitement, j'ai rajoute une chose ou deux.

J'ai mis deux fonction VBA, J'aimerais imbriqueter celle que tu as fait dans la sélection du range avec la fonction pour envoyer un e-mail.

Je réussi a le faire, mais l'envoi dans le e-mail n'inclus pas ma sélection.

Est-ce que je peux solliciter ton aide encore.

Sub Mail_Selection()
'Working in 2000-2010
    Dim Source As Range
    Dim Dest As Workbook
    Dim wb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim I As Long

    Set Source = Nothing
    On Error Resume Next
    Set Source = Selection.SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Source Is Nothing Then
        MsgBox "The source is not a range or the sheet is protected, " & _
               "please correct and try again.", vbOKOnly
        Exit Sub
    End If
'< 1 Or
    If ActiveWindow.SelectedSheets.Count = Range("L2:L44").Select Or _ 'SELECTION du RANGE a cet endroit
       Selection.Areas.Count > 1 Then
        MsgBox "An Error occurred :" & vbNewLine & vbNewLine & _
               "You have more than one sheet selected." & vbNewLine & _
               "You only selected one cell." & vbNewLine & _
               "You selected more than one area." & vbNewLine & vbNewLine & _
               "Please correct and try again.", vbOKOnly
        Exit Sub
    End If

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set wb = ActiveWorkbook
    Set Dest = Workbooks.Add(xlWBATWorksheet)

    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Selection of " & wb.Name & " " _
                 & Format(Now, "dd-mmm-yy h-mm-ss")

    If Val(Application.Version) < 12 Then
        'You use Excel 2000-2003
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        'You use Excel 2007-2010
        FileExtStr = ".xlsx": FileFormatNum = 51
    End If

    With Dest
        .SaveAs TempFilePath & TempFileName & FileExtStr, _
                FileFormat:=FileFormatNum
        On Error Resume Next
        For I = 1 To 3
            .SendMail "NCSVTControlCenter@campus.mcgill.ca", _
                      "Sanyo Lamps to be order for inventory"
            If Err.Number = 0 Then Exit For
        Next I
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

    With Application
     '   ActiveSheet.Range("L2:L44").ClearContents
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

Sub Prepare()
Application.ScreenUpdating = False
Dim c As Range
Dim derlg As Integer

ActiveSheet.Range("L2:L44").ClearContents

derlg = Range("A65536").End(xlUp).Row

For Each c In Range("J2:J" & derlg)
If c <= 0 Then
c.Offset(0, 2) = c.Offset(0, -8) & " / " & c.Offset(0, -7) & " / " & c.Offset(0, -1)
End If
Next c
End Sub

Merci

Re

Je ne suis pas assez calée pour modifier ton code. Mais quelqu'un d'autre va surement prendre la main.

Amicalement

Nad

Bonsoir

Bien que je sois loin de tout comprendre surtout cette partie

 If ActiveWindow.SelectedSheets.Count = Range("L2:L44").Select Or _ 'SELECTION du RANGE a cet endroit
      Selection.Areas.Count > 1 Then

Pour que le résultat de la macro de Nad soit dans le mail il faut d'abord l'exécuter (la macro )

Sub Mail_Selection()
'Working in 2000-2010
   Dim Source As Range
    Dim Dest As Workbook
    Dim wb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim I As Long

   Prepare

    Set Source = Nothing
'
' Reste du code
'

Bonjour

Banzaï, heureusement que tu précises que c'est la macro qu'il faut exécuter !!

Amicalement

Nad

Rechercher des sujets similaires à "selectionner range"