Selectionner plage cellule en fonction d'un mot

Bonjour,

Je repose un petit post pour mon nouveau problème, si vous pouvez me dépatouiller SVP

Je souhaiterais pouvoir selectionner un mot avec un menu déroulant dans une autre feuille et pouvoir faire varier la plage de cellule selectionner en fonction de ce mot dans un tableau d'une autre feuille. Je joins un petit fichier exemple, si je souhaite uniquement selectionner les lignes de "C" pour leur appliquer une fonction. Puis plus tard selectionner les "V" pour faire de même....

Je vous remercie vivement d'avance !

PS: jusqu'a maintenant j'utilise ce code pour selectionner ma plage de cellule pour ma fonction suivante:

    ThisWorkbook.Names.Add "plage", RefersTo:="='" & .Name & "'!$A$1:$E$" & .Range("A" & Rows.Count).End(xlUp).Row
37book1.xlsx (9.45 Ko)

Bonjour Toumass, bonjour le forum,

En pièce jointe ton fichier modifié. J'ai rajouté une ComboBox dans l'onglet Sheet2 et une première ligne d'étiquettes (que tu adapteras) dans l'onglet Sheet1 pour pouvoir filtrer. Le code se trouve dans le composant Sheet2(Sheet2). Tu sélectionnes une valeur dans la ComboBox1, l'onglet Sheet1 est filtré par rapport à cette valeur.

Quand tu actives l'onglet Sheet2le filtre est supprimé et la ComboBox1 est vidé... Dis-moi si ça te convient...

Private O As Worksheet 'déclare la variable O (Onglet)
Private TC As Variant 'déclare la variable TC (Tableau de Cellules)

Private Sub Worksheet_Activate() 'à l'activation de l'onglet
Me.ComboBox1.Value = "" 'vide la Combobox1
If Sheets("Sheet1").FilterMode = True Then Sheets("Sheet1").Range("A1").AutoFilter 'si l'onglet "Sheet1" est filtré, supprime le filtre
End Sub

Private Sub ComboBox1_GotFocus() 'au clic dans la ComboBox1
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Sheets("Sheet1") 'définit l'onglet O
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
Set D = CreateObject("Scripting.Dictionary") 'définit le diction naire D
For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau TC (en partant de la seconde)
    D(TC(I, 1)) = "" 'alimente le dictionnaire D avec la valeur ligne I colonne 1 (Donnée 1)
Next I 'prochaine ligne de la boucle
Me.ComboBox1.List = D.Keys 'alimente la ComboBox1 avec la liste des éléments du dictionnaire D sans doublon
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
ActiveCell.Select 'enlève le focus a la Combobox1
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
    O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la ComboBox1 comme critère
    O.Activate 'active l'onglet O
End If
End Sub
51toumass-v01.xlsm (23.89 Ko)

C'est ce que je voulais merci beaucoup. Juste un petit soucis c'est comment gerer après la selection de la plage de cellule en fonction des resultat de ce tableau. Le nombre de ligne varie et dépend du mot que l'on choisie

Re,

toumass a écrit :

comment gerer...

Ça veut dire quoi gérer pour toi ? Que veux-tu faire exactement ?...

Une fois que mes lignes sont trier en fonction du nom, je voudrais pouvoir selectionner la plage de cellule correspondante.

Comme je pouvais le faire avec cette commande, mais elle ne marche pas ou je ne sais pas bien la mettre

 ThisWorkbook.Names.Add "plage", RefersTo:="='" & .Name & "'!$A$1:$E$" & .Range("A" & Rows.Count).End(xlUp).Row

Voila le code entier:

rivate O As Worksheet 'déclare la variable O (Onglet)
Private TC As Variant 'déclare la variable TC (Tableau de Cellules)

Private Sub ComboBox1_GotFocus() 'au clic dans la ComboBox1
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Sheets("Feuil1") 'définit l'onglet O
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
Set D = CreateObject("Scripting.Dictionary") 'définit le diction naire D
For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau TC (en partant de la seconde)
    D(TC(I, 1)) = "" 'alimente le dictionnaire D avec la valeur ligne I colonne 1 (Donnée 1)
Next I 'prochaine ligne de la boucle
Me.ComboBox1.List = D.Keys 'alimente la ComboBox1 avec la liste des éléments du dictionnaire D sans doublon
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
ActiveCell.Select 'enlève le focus a la Combobox1
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
    O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la ComboBox1 comme critère
Sheets("Feuil1").Activate

     ThisWorkbook.Names.Add "plage", RefersTo:="='" & .Name & "'!$A$1:$E$" & .Range("A" & Rows.Count).End(xlUp).Row

End If
End Sub

Re,

Peut-être comme ça :

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)

ActiveCell.Select 'enlève le focus a la Combobox1
Set PL = O.Range("A1").CurrentRegion 'définit la palge PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
    O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la ComboBox1 comme critère
    Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV
    PLV.Name = "plage_" & Me.ComboBox1.Value 'nomme la plage PLV
    O.Activate 'active l'onglet O
End If 'fin de la condition
End Sub

Le trie se fait bien mais la plage selectionné ne doit pas etre bonne puisque ma fonction utilise toujours les valeurs des lignes cachée. Je peux voir ça car la valeure obtenu manuellement ne correspond pas à la valeur fourni par la macro.

Private O As Worksheet 'déclare la variable O (Onglet)
Private TC As Variant 'déclare la variable TC (Tableau de Cellules)

Private Sub ComboBox1_GotFocus() 'au clic dans la ComboBox1
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Sheets("Feuil1") 'définit l'onglet O
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
Set D = CreateObject("Scripting.Dictionary") 'définit le diction naire D
For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau TC (en partant de la seconde)
    D(TC(I, 1)) = "" 'alimente le dictionnaire D avec la valeur ligne I colonne 1 (Donnée 1)
Next I 'prochaine ligne de la boucle
Me.ComboBox1.List = D.Keys 'alimente la ComboBox1 avec la liste des éléments du dictionnaire D sans doublon
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
ActiveCell.Select 'enlève le focus a la Combobox1
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
    O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la ComboBox1 comme critère
End If

Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)

ActiveCell.Select 'enlève le focus a la Combobox1
Set PL = O.Range("A1").CurrentRegion 'définit la palge PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
   O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la ComboBox1 comme critère
   Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV
   PLV.Name = "plage_" & Me.ComboBox1.Value 'nomme la plage PLV
   O.Activate 'active l'onglet O
End If 'fin de la condition

End Sub

et la fonction qui constitue ma macro

Sub Regression()

Dim sheetReg As Worksheet

   ThisWorkbook.Sheets.Add After:=ActiveSheet
    Set sheetReg = ThisWorkbook.ActiveSheet
    sheetReg.Name = "regression"

Feuil1.Activate
Dim ncol, nbXY, nblig As Integer
ncol = Range("plage").Columns.Count
nblig = Range("plage").Rows.Count
nbXY = Range("plage").Columns.Count - 1

'nommer la colonne des Y'
Range(Cells(2, ncol), Cells(nblig, ncol)).Name = "Y"

'nommer la colonne de X'
Range(Cells(2, 2), Cells(nblig, ncol - 1)).Name = "X"

sheetReg.Cells(3, 1).Value = "a"
sheetReg.Cells(4, 1).Value = "sigma a"
'la régression'
sheetReg.Activate
Cells(2, ncol).Value = "constante"

'copier les noms de variables
For I = ncol - 1 To 2 Step -1
    'à partir de la feuille 1
    Cells(2, I).Value = Sheets("Feuil1").Cells(1, ncol - I + 1)
Next I

'insérer la fonction régression
Range(Cells(3, 2), Cells(7, nbXY + 1)).FormulaArray = "=LINEST(Y,X,1,1)"

Re,

Je ne savais pas le nom de ta plage nommée était plage. Je les avais nommées plage_A si A avait été sélectionné, plage_B, etc.... Je comprends mieux maintenant...

Si tu avais donné le code complet dès le début on aurait gagné du temps non ?!...

Essaie comme ça :

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)

ActiveCell.Select 'enlève le focus a la Combobox1
Set PL = O.Range("A1").CurrentRegion 'définit la palge PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
If Me.ComboBox1.Value <> "" Then 'condition : si la ComboBox1 n'est pas vide
   O.Range("A1").AutoFilter Field:=1, Criteria1:=Me.ComboBox1.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de la ComboBox1 comme critère
   Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit la plage PLV
   PLV.Name = "plage" 'nomme la plage PLV
   O.Activate 'active l'onglet O
End If 'fin de la condition
End Sub

Ah oui désolé, c'est une étourderie... C'est déjà un peu mieux mais le petit problème restant est du au faite que les plages gardent leurs numéros de lignes, du coup pour ma macro suivante, elle est perdu...

De plus quand je retroune dans ma feuille d'origine et que je veux ajouter des nouvelles données, celle-ci ne sont pas prises en compte. J'ai presque ce qu'il faut mais non ...

Sub Regression()

Dim sheetReg As Worksheet

   ThisWorkbook.Sheets.Add After:=ActiveSheet
    Set sheetReg = ThisWorkbook.ActiveSheet
    sheetReg.Name = "regression"

Feuil1.Activate
Dim ncol, nbXY, nblig As Integer
ncol = Range("plage").Columns.Count
nblig = Range("plage").Rows.Count
nbXY = Range("plage").Columns.Count - 1

'nommer la colonne des Y'
Range(Cells(2, ncol), Cells(nblig, ncol)).Name = "Y"

'nommer la colonne de X'
Range(Cells(2, 2), Cells(nblig, ncol - 1)).Name = "X"

sheetReg.Cells(3, 1).Value = "a"
sheetReg.Cells(4, 1).Value = "sigma a"
'la régression'
sheetReg.Activate
Cells(2, ncol).Value = "constante"

'copier les noms de variables
For I = ncol - 1 To 2 Step -1
    'à partir de la feuille 1
    Cells(2, I).Value = Sheets("Feuil1").Cells(1, ncol - I + 1)
Next I

'insérer la fonction régression
Range(Cells(3, 2), Cells(7, nbXY + 1)).FormulaArray = "=LINEST(Y,X,1,1)"

Re,

Il n 'y a pas de Feuil1 dans ton le fichier que tu as fourni en pièce jointe mais un onglet Sheet1... La ligne de code :

Feuil1.Activate

plante. Il faut écrire :

Sheet1.Activate

Pour parler de la cellule ligne 2 colonne 1 de la plage nommée plage, il faut utiliser la syntaxe :

Range("plage")(2,1)

donc pour nommer les axes (mais là j'ai rien compris)

Range(Range("plage")(2, ncol), Range("plage")(nblig, ncol)).Name = "Y"
Range(Range("plage")(Cells(2, 2), Range("plage")(nblig, ncol - 1))).Name = "X"

Oui en faite j'ai juste renommer les pages. Donc pour les pages le code est bon.

Pour les X et Y ce ne sont pas des axes. Ce sont des matrices. X matrice (n,3) représente la matrice des données d'entrée de la fonction (X(n,1), X(n,2) et X(n,3). Ensuite, Y est une matrice (n,1) et représente le résultat. La formule utilisée est bonne puisqu'elle marche en manuelle.

Le seul problème réside dans le fait qu'en sélectionnant une lettre avec ma ComboBox, je n'affiche plus que les lignes désiré. Or ma macro, elle, repart de la ligne 1 etc... Je souhaiterais non pas cacher les autres lignes mais les supprimer pour faire le calcul. Puis en changeant la lettre dans la ComboBox, ré-afficher les données correspondant tout en supprimant celle inutile au calcul.

C'est là que je bloque... Sur le fait de mettre que les données correspondant à "W" par exemple, mais en les affichant à partir de la case "A2"... Puis que ça puisse évoluer avec d'autres lettre dans la ComboBox.

Je sais pas quelle boucle on peut faire pour justement séléctionner les lignes qu'on veut ou qu'on veut pas...

Re,

Mon problème est que je ne sais pas ce qu'est une régression et que que je ne comprends pas le code qui y fait référence. Toutefois, je te propose une nouvelle méthode. Les lignes indésirables ne sont plus masquées. La plage correspondante au choix est récupérée dans un nouvel onglet appelé tempo. Tu n'as donc plus de lignes masquées. J'ai essayé d'adapter le code de la régression mais j'obtiens des erreurs. Pourtant il ne semble que les plages nommées X, Y et plage sont bonnes...

Regarde si ça peut te servir. Attention, dès que l'on fait un nouveau choix dans la Combobox1 les onglets tempo et regression sont supprimés (si ils existent) et remplacés par les nouveaux tempo et regression avec les données correspondantes...

16toumass-v02.zip (31.04 Ko)

C'est déja beaucoup mieux ça !

Ca ne marche pas car dans le fichier tempo il faudrait faire exactement la même chose mais copier uniquement les colonnes contenant des chiffres (si le tableau est plus grand et qu'il y a des colonnes avec des lettres: voir exemple joint) mais aussi supprimer, en plus des lignes qui correspondent pas à la selection de la ComboBox, les lignes portant des cellules vides dans les colonnes chiffrées.

Avec l'exemple en pièce jointe, pour passer à la feuille Tempo, il faudrait copier uniquement les Colonnes A,B,D et E. La colonne A ne pose pas de problème car elle est gerée dans la macro de la fonction regression. De plus, si on prend la selection des "M", il ne faudrais pas prendre la ligne possèdant des cases vides dans les colonnes B,C,D et E. Sinon la formule ne comprend plus rien...

Si cela marche, tu seras un expert de la regression

Re,

toumass a écrit :

voir exemple joint

Où, lequel ?

je récapitule car ce n'est pas clair :

• on ne prend que les colonnes A, B , D et E (la C disparaît)

• si dans une ligne une la colonne B, C, D ou E n'est pas renseignée on ne prend pas la ligne (pourquoi C alors ?)

Ne pourrais-tu pas me faire un fichier exemple avec Avant/Après passage de la macro pour nous éviter plein de blabla...

Oui pardon, je l'ai oublié.

C'est exactement ça. En faite C est la pour donner des informations mais ne sert pas pour le calcul, c'est pour ça qu'il faut la supprimer. En fait Sheet1 sert de tableau global d'information, tempo sert à n'afficher uniquement les données necessaire au calcul en suivant la condition donnée par la ComboBox.

J'ai fais les doc avant et après pour la lettre "B". Je sais pas si c'est mieux. Ce que tu m'as dit juste avant est bon en tout cas.

Voir sur la feuille tempo

Re,

Désolé mais ce n'est toujours pas clair !...

C'est exactement ça. En faite C est la pour donner des informations mais ne sert pas pour le calcul, c'est pour ça qu'il faut la supprimer.

Tu me dis que la colonne C disparaît et dans tes deux exemples elle est toujours présente aussi bien dans provi que dans regression ?!...

Regarde si ce nouveau code convient, mais j'avoue que je suis largué là :

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim TL() As Variant 'déclare la variable TL (Tableau de Lignes)
Dim A As Integer 'déclare la variable A (incrément)
Dim TEST As Boolean 'déclare la variable TEST
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

ActiveCell.Select 'enlève le focus a la Combobox1
On Error Resume Next
Application.DisplayAlerts = False 'empêche les messages d'Excel
Sheets("regression").Delete 'supprime l'onglet "regression"
Sheets("tempo").Delete 'supprime l'onglet "tempo"
Application.DisplayAlerts = True 'permet les messages d'Excel
If Err <> 0 Then Err.Clear 'si une erreur a été générée, efface l'erreur
If Me.ComboBox1.Value = "" Then Exit Sub 'si la ComboBox1 est vide, sort de la procédure
Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un nouvel onglet en dernière position
Set OD = ActiveSheet 'définit l'onglet OD
OD.Name = "tempo" 'définit le nom de l'onglet OD
K = 1 'initialise la variable K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau TC (en partant de la seconde)
    TEST = False 'réinitialise la variable TEST
    If TC(I, 1) = Me.ComboBox1.Value Then 'condition 1: si la valeur ligne I colonne 1 de TC est égale à la valeur de la ComboBox1
        For A = 1 To NC 'boucle 2 : sur toutes les colonnes A de TC
            If A <> 3 And TC(I, A) = "" Then TEST = True 'si A est différent de 3 (colonne C) et si la valeur ligne I colonne A de TC est vide, redéfinit la variable TEST
        Next A 'prochaine colonne de la boucle 2
        If TEST = False Then 'condition 2 : si TEST est [Faux]
            ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau TL (autant de lignes que TC a de colonnes, K colonnes)
            For J = 1 To NC 'boucle 3 : sur toutes les colonnes de TC
                TL(J, K) = TC(I, J) 'récupère en ligne J colonne K de TL la valeur ligne I colonne J de TC (transposition)
            Next J 'prochaine colonne de la boucle
            K = K + 1 'incrémente K (ajoute une colonne à TL)
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
If K > 1 Then 'condition : si K est supérieur à 1
    OD.Range("A1").Resize(1, NC).Value = Application.Index(TC, 1) 'renvoie dans A1 redimensionnée de l'onglet OD la première ligne de TC
    OD.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé
    OD.Range("A1").CurrentRegion.Name = "plage" 'nomme la plage des données
    OD.Activate 'active l'onglet O
End If 'fin de la condition
Module1.Regression 'lance la procédure [Regression] du module [Module1]
End Sub

Oui c'est ça par contre j'ai mal fait l'exemple, il faut completement supprimer la colonne C dans la feuille "tempo". Car dans la plage, il ne faut que des données chiffrées.

Après ça, normalement ça devrait le faire :p

D'ailleurs si il faut supprimer, pour les même raisons que la colonne C, une autre colonne positionné en G par exemple. Quelle serait le code?

Re,

Comme je me rend compte que tu n'est même pas foutu de lire ne serait-ce que le code que je m'emm...de à commenter (car supprimer une colonne en VBA c'est du niveau de base)... Je t'envoie ma derniere proposition. Après il te faudra trouver un autre couillon...

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim TL() As Variant 'déclare la variable TL (Tableau de Lignes)
Dim A As Integer 'déclare la variable A (incrément)
Dim TEST As Boolean 'déclare la variable TEST
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)

ActiveCell.Select 'enlève le focus a la Combobox1
On Error Resume Next
Application.DisplayAlerts = False 'empêche les messages d'Excel
Sheets("regression").Delete 'supprime l'onglet "regression"
Sheets("tempo").Delete 'supprime l'onglet "tempo"
Application.DisplayAlerts = True 'permet les messages d'Excel
If Err <> 0 Then Err.Clear 'si une erreur a été générée, efface l'erreur
If Me.ComboBox1.Value = "" Then Exit Sub 'si la ComboBox1 est vide, sort de la procédure
Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un nouvel onglet en dernière position
Set OD = ActiveSheet 'définit l'onglet OD
OD.Name = "tempo" 'définit le nom de l'onglet OD
K = 1 'initialise la variable K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau TC (en partant de la seconde)
    TEST = False 'réinitialise la variable TEST
    If TC(I, 1) = Me.ComboBox1.Value Then 'condition 1: si la valeur ligne I colonne 1 de TC est égale à la valeur de la ComboBox1
        For A = 1 To NC 'boucle 2 : sur toutes les colonnes A de TC
            If A <> 3 And TC(I, A) = "" Then TEST = True 'si A est différent de 3 (colonne C) et si la valeur ligne I colonne A de TC est vide, redéfinit la variable TEST
        Next A 'prochaine colonne de la boucle 2
        If TEST = False Then 'condition 2 : si TEST est [Faux]
            ReDim Preserve TL(1 To NC, 1 To K) 'redimensionne le tableau TL (autant de lignes que TC a de colonnes, K colonnes)
            For J = 1 To NC 'boucle 3 : sur toutes les colonnes de TC
                TL(J, K) = TC(I, J) 'récupère en ligne J colonne K de TL la valeur ligne I colonne J de TC (transposition)
            Next J 'prochaine colonne de la boucle
            K = K + 1 'incrémente K (ajoute une colonne à TL)
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
If K > 1 Then 'condition : si K est supérieur à 1
    OD.Range("A1").Resize(1, NC).Value = Application.Index(TC, 1) 'renvoie dans A1 redimensionnée de l'onglet OD la première ligne de TC
    OD.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé
    OD.Columns(3).Delete 'efface la colonne C (c'est ici que tu modifieras si c'est une autre colonne)
    OD.Range("A1").CurrentRegion.Name = "plage" 'nomme la plage des données
    OD.Activate 'active l'onglet O
End If 'fin de la condition
Module1.Regression 'lance la procédure [Regression] du module [Module1]
End Sub

Re,

Ce n'est pas le cas, c'est juste que ton code est ultra poussé. Tout est fait avec des boucles, sans des pauvres fonctions avec les coordonnées de cellules ou autre, alors j'avoue être bien perdu...

Je cherche à chaque fois de mon coté mais en général tu as le temps de refaire un code avant même que j'ai fini de bien comprendre le précédent.

Je ne voulais pas te mettre mal à l'aise... Tant pis, en tout cas merci beaucoup pour ton aide, tu es un expert

Bonne continuation, merci

Rechercher des sujets similaires à "selectionner plage fonction mot"