Microsoft 365 Aide sur une automatisation de saisie de données

jean_jack

XLDnaute Junior
Bonjour à tous j’espère que vous êtes tous épargnés par le COV 19. Je viens ré-poster mon sujet de la dernière fois qui n'avait pas eu de solution en espérant que cette seconde tentative sera la bonne .

Dans le fichier excel joint vous trouverez a gauche un tableau avec une série de nom comme celui-ci (165702_1_1) , ces noms sont obtenues à partir d'une fiche papier que je reçois en fin de journée. Chaque nom est subdivisé comme suit: 165702 = Nom d'un bloc ; 1 = Numéro de la ligne 1 ; 1 = Numéro de la colonne 1. Ce qui donne 165702_1_1 . Ce que j'aimerai faire c'est de rentrer dans un formulaire le nom d'un seule bloc , suivit du nombre de lignes , du nombre de colonnes et du nombre de blocs pour qu’ils puissent générer automatiquement le noms de tous les autres points et les insérer dans une colonne comme dans la colonne N. J'ai imagé mes explications avec des flèches dans le fichier excel. J'espère sincèrement que vous pourrez m'aider parce que je galère grave avec ces données , parfois j'en ai plus 500 à rentrer à la main.

Un code VBA qui alimenterai mon formulaire serait la bienvenue Merci d'avance.
 

Pièces jointes

  • EXEMPLE_DB.xlsx
    16.9 KB · Affichages: 11
Dernière édition:

fanfan38

XLDnaute Barbatruc
Bonjour
Est ce la colonne k qu'il faut traiter ou les colonnes A,B, C, D...
J'ai réessayé pour moi ça marche
plus de double clic le bouton de la feuille1 traite la colonne K
le bouton de la feuille 2 traite les cellules de a2 à d9
le nombre de ligne et de colonne étant contrôlé par la macro
quelques explications dans la macro "Feuil2_Bouton1_Cliquer"
A+ François
 

Pièces jointes

  • EXEMPLE_DB.xlsm
    31.4 KB · Affichages: 5
Dernière édition:

jean_jack

XLDnaute Junior
Bonjour
Est ce la colonne k qu'il faut traiter ou les colonnes A,B, C, D...
A+ François

En faite le but c'est d’obtenir la colonne K en rentrant les données ( du nombre de blocs, le nombre de lignes et de colonnes) dans le formulaire que j'ai commencé. Ou d’obtenir cette colonne avec une série de formule en ne rentrant que le noms des blocs , de lignes et de colonnes. Merci pour le temps que vous consacrez à mon problème.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, jean_jack, fanfan38

Une façon de faire (celle d'un confiné breton ;))
VB:
Sub Création_Liste_Points()
Dim vArr() As String, Bloc, NB_LC, i&, j&
Bloc = InputBox("Nom Bloc?", "Bloc", 165702): NB_LC = InputBox("Ligne-Colonne?", "Bloc", "4-4")
NL = CLng(Split(NB_LC, "-")(0) * 1): NC = CLng(Split(NB_LC, "-")(1) * 1)
ReDim vArr(1 To NL, 1 To NC) As String
For i = LBound(vArr) To UBound(vArr)
For j = LBound(vArr, 2) To UBound(vArr, 2): vArr(i, j) = CStr(i) & "_" & CStr(j): Next j
Next i
k = 2
For i = LBound(vArr) To UBound(vArr)
For j = LBound(vArr, 2) To UBound(vArr, 2): Cells(k, "K") = Bloc & "_" & CStr(vArr(i, j)): k = k + 1
Next j
Next i
End Sub
NB: Lors de la saisie, il faut séparer dans l'InputBox, le nombre de ligne et colonne par un tiret, comme dans la valeur par défaut
4-4
 

jean_jack

XLDnaute Junior
Donc voir la feuille 2 du fichier que je viens de t'envoyer... et la macro
Feuil2_Bouton1_Cliquer
qui va avec...
A+ François

Bonjour Fanfan38, merci pour ta réponse mais en faite la réponse ne correspond pas vraiment à ce que je veux faire. Mon but c'est d'éviter de recopier toutes les données (nom des points ) à la main , sachant que je reçois le nom des points sur une fiche papier en fin de journée. Je voudrais donc à l'aide d'un formulaire ou d'un bouton rentrer le nom du blocs, le nombre de lignes et de colonnes pour que le formulaire puisse générer automatiquement le nom de tous les points du bloc et les insérer dans une colonne comme la colonne K . L'idéal serait de pouvoir générer les noms des points de tous les blocs en rentrant seulement le nom du point d'un seule blocs et en définissant le nombre de ligne et de colonne de tous les blocs réunis. Sachant qu'a l’horizontale les noms des blocs se construisent de la façon suivante : Nom bloc 2 = Nom bloc 1 + 500 et Nom bloc 3 = Nom bloc 2 + 500 ainsi de suite ..... et à la verticale Nom bloc 2 = Nom bloc 1 +1 et Nom bloc 3 = Nom bloc 2 +1 ainsi de suite ..

L'idée ça serait de rentrer dans le formulaire le nom d'un seul bloc , suivit du nombre de lignes dans tous les blocs et du nombre de colonnes dans tous les blocs et ainsi de générer le nom de tous les points dans tous les blocs dans la colonne dédiée.
 
Dernière édition:

jean_jack

XLDnaute Junior
Bonjour le fil, le forum, jean_jack, fanfan38

Une façon de faire (celle d'un confiné breton ;))
VB:
Sub Création_Liste_Points()
Dim vArr() As String, Bloc, NB_LC, i&, j&
Bloc = InputBox("Nom Bloc?", "Bloc", 165702): NB_LC = InputBox("Ligne-Colonne?", "Bloc", "4-4")
NL = CLng(Split(NB_LC, "-")(0) * 1): NC = CLng(Split(NB_LC, "-")(1) * 1)
ReDim vArr(1 To NL, 1 To NC) As String
For i = LBound(vArr) To UBound(vArr)
For j = LBound(vArr, 2) To UBound(vArr, 2): vArr(i, j) = CStr(i) & "_" & CStr(j): Next j
Next i
k = 2
For i = LBound(vArr) To UBound(vArr)
For j = LBound(vArr, 2) To UBound(vArr, 2): Cells(k, "K") = Bloc & "_" & CStr(vArr(i, j)): k = k + 1
Next j
Next i
End Sub
NB: Lors de la saisie, il faut séparer dans l'InputBox, le nombre de ligne et colonne par un tiret, comme dans la valeur par défaut
4-4

Bonjour Staple 1600 ,merci pour ta réponse mais en faite la réponse ne correspond pas vraiment à ce que je veux faire. Mon but c'est d'éviter de recopier toutes les données (nom des points ) à la main , sachant que je reçois le nom des points sur une fiche papier en fin de journée. Je voudrais donc à l'aide d'un formulaire ou d'un bouton rentrer le nom du blocs, le nombre de lignes et de colonnes pour que le formulaire puisse générer automatiquement le nom de tous les points du bloc et les insérer dans une colonne comme la colonne K . L'idéal serait de pouvoir générer les noms des points de tous les blocs en rentrant seulement le nom du point d'un seule blocs et en définissant le nombre de ligne et de colonne de tous les blocs réunis. Sachant qu'a l’horizontale les noms des blocs se construisent de la façon suivante : Nom bloc 2 = Nom bloc 1 + 500 et Nom bloc 3 = Nom bloc 2 + 500 ainsi de suite ..... et à la verticale Nom bloc 2 = Nom bloc 1 +1 et Nom bloc 3 = Nom bloc 2 +1 ainsi de suite ..

L'idée ça serait de rentrer dans le formulaire le nom d'un seul bloc , suivit du nombre de lignes dans tous les blocs et du nombre de colonnes dans tous les blocs et ainsi de générer le nom de tous les points dans tous les blocs dans la colonne dédiée.
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 107
Messages
2 085 354
Membres
102 872
dernier inscrit
YvanCB