Lister contenu variable dans une cellule

bonjour à tous,

je cale pour lister le contenu de ma variable "NumLot" qui contient 5 numéros (20001 à 20005) dans la cellule A1, séparés par une virgule.

exemple en A1 = 20001, 20002, 20003, 20004, 20005

je sollicite votre aide pour avoir une solution.

merci d'avance.

Pedro.

Pas sûr d'avoir tout compris...

Si la variable contient déjà 5 N° séparés par une virgule :

Range("A1").Value = NumLot

Si la variable contient 5 N° séparés par un espace

Range("A1").Value = Replace(NumLotNumLot, " ", ",") 

A+

Bonjour à tous,

Si j'ai bien compris, vous cherchez à obtenir une liste de validation à partir d'une cellule...

J'ai peur que ce ne soit pas possible sans VBA. Sinon, je serais ravi d'en connaître le moyen.

Voici une proposition avec une fonction personnalisée et une liste obtenue grâce à cette fonction :

Function spliter(chaine$, sep$)
spliter = Split(chaine, sep)
End Function

Une formule (qui peut être simplifiée) pour restituer de façon dynamique les valeurs, sans espace indésirable :

=SIERREUR(INDEX(SUPPRESPACE(spliter($A$1;","));LIGNE()-LIGNE(Liste[#En-têtes]));"")

et une formule de validation (qui peut également être simplifiée) pour avoir la liste sans valeur vide de façon dynamique également :

=DECALER(INDIRECT("Liste");;;LIGNES(INDIRECT("Liste"))-NB.VIDE(INDIRECT("Liste")))
1split-virgule.xlsm (13.74 Ko)

Cdlt,

bonjour et merci pour vos réponses.

je pense ne pas avoir bien expliqué mon problème, aussi qu'un petit fichier exemple permettrait d'être plus clair.

dans l'exemple, résultat attendu en A1 = 200000 et 200005 (or il ne m'affiche que le 200005)

Private Sub CommandButton1_Click()
Dim NumLot
   For e = 5 To 9
          NumLot = Sheets("Déroulants").Range("AD" & e).Value
LgnStock = Application.Match(CLng(NumLot), Sheets("Stocks").Range("C:C"), 0)
     If Left(Sheets("Stocks").Range("J" & LgnStock), 2) = "NC" Then
          Sheets("Déroulants").Range("AD" & e).Interior.ColorIndex = 3
          Sheets("Déroulants").Range("A1").Value = Sheets("Déroulants").Range("AD" & e).Value
     End If
   Next
End Sub
3classeur1.xlsm (21.64 Ko)

merci.

Bonjour,

Je ne peux pas regarder le fichier pour l'instant mais je crois que j'ai compris. Est-ce ça que vous voulez ?

Private Sub CommandButton1_Click()

dim t()

with Sheets("Déroulants")
    For e = 5 To 9
        NumLot = .Range("AD" & e).Value
        LgnStock = Application.Match(CLng(NumLot), Sheets("Stocks").Range("C:C"), 0)
        sresult = trim(Sheets("Stocks").Range("J" & LgnStock))
        If sresult like "NC*" Then
            .Range("AD" & e).Interior.ColorIndex = 3
            n = n + 1: redim preserve t(1 to n): t(n) = numlot
        End If
    Next
    .Range("A1").Value = join(t, ", ")
end with

Cdlt,

Bonjour toutes et tous

coucous

@Dudesson

comme ceci ci-joint

et celui de 3Gb ^^

crdlt,

André

bonjour,

j'ai un bug ici

ReDim Preserve t(1 To

il me met variable non définie

merci.

re

Dim t

re, en A1 je n'ai toujours que le dernier numéro, ne met pas les deux...

Salut André et merci encore, décidément !

Oui j'ai oublié de déclarer la variable, désolé . Je crois qu'il faut préciser qu'il s'agira d'un array : dim t()

Edit : Si tu n'obtiens pas la seconde valeur, je dirais que c'est parce que la condition n'est vraie qu'une seule fois... A vérifier

Edit2 : Probablement parce que la valeur obtenue en J comporte un élément qui brouille les pistes (un espace de fin par exemple). Peux-tu essayer avec la nouvelle variable sresult qui efface ce genre d'espaces (voir code ci-haut réédité)

re,

merci 3GB, Andre13, là ça fonctionne nickel.

merci beaucoup.

Pedro.

Nickel ! Merci du retour !

Cdlt,

Rechercher des sujets similaires à "lister contenu variable"