définir une variable à partir d'une cellule, .........et comment l'utiliser?

guigui971

XLDnaute Junior
Bonjour,
Bien que je ne maitrise pas du tout le VBA, je me suis jusqu'à maintenant débrouillé avec l'enregistreur de macro. Maintenant j'atteins mes limites avec cette méthode.

J'ai dans mon projet un certain nombre de lignes, du genre :

Range("y2:y200").Select
Range("o3:t200").Select
Selection.AutoFill Destination:=Range("C2:C200"), Type:=xlFillDefault
ActiveSheet.PageSetup.PrintArea = "$B$1:$W$200"​

Je voudrais pouvoir remplacer la valeur "200" par une valeur saisie dans une cellule de mon tableur. Disons en A1.

J'ai compris que çà passait par quelque chose dans le genre "range("A1").Value", mais je ne sais pas du tout comment faire. Surtout que cette cellule A1 est dans une autre feuille que celle où agit ma macro.

Merci de vos conseils.
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Bonjour guigui971,

Déclarez une variable Ligne et affectez lui la valeur de la cellule A1 (si A1 est sur la feuille "MaFeuille") :

Code:
Dim Ligne as long
Ligne =Sheets("MaFeuille").Range("A1")

Vous pouvez ensuite écrire:
Range("y2:y" & Ligne) ou bien "$B$1:$W$" & Ligne

Edit: Hello staple40x40 :)! You are right. Two nice cups of coffee late in the evening were enough to turn me into an excited big (very big, enormous, almost monstrous) flea. 785806-jumping-flea-isolated-on-white-drawn-in-toddler-art-style.jpg
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Bonjour à tous, mapomme ;) ________________(Waouh, sur XLD dés 3h36, le café devait être strong hier soir ;) )

guigui971
Au cas où A1 n'est pas orthodoxe pour un numéro de ligne ;)
(c-a-d vide ou non numérique)
Code:
Dim Ligne&
With Sheets("MaFeuille")
If IsEmpty(.[A1]) Or Not IsNumeric(.[A1]) Then
Exit Sub
Else
Ligne= .[A1]
End If
End With
J'ajouterai en plus des exemples d'utilisation fournies par ma pomme, celui-ci:
Code:
WhatEverYouWant="Hello World"
Range("A5").Resize(Ligne)=WhatEverYouWant

ou encore celui-là
Code:
GuessWhereIam=Cells(Ligne,"B").Offset(12,3).Address
MsgBox GuessWhereIam

 
Dernière édition:

guigui971

XLDnaute Junior
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Bonjour MaPomme (amateur de MAC?) et Staple1600 (un modèle d'agrafeuse?).
Merci pour vos conseils.

Concernant la proposition de "Ma pomme", j'ai mis le code au tout début, dans ma première macro.
Dim Ligne As Long
Ligne = Sheets("Paramètres").Range("B21")​

Cà tourne, et çà passe notament ce genre de chose :
Selection.AutoFill Destination:=Range("A2:A" & Ligne), Type:=xlFillDefault
Range("A2:A" & Ligne).Select

jusqu'au moment ou j'ai l'erreur - Method 'Range' of object'_Global' failed - qui se produit sur ceci :
Selection.AutoFill Destination:=Range("y2:y" & Ligne), Type:=xlFillDefault
Qu'en pensez vous?

J'ai testé la proposition de Staple1600, bien que la cellule source B21 soit en fait une liste déroulante et qu'il n'y a donc pas de risque qu'elle soit vide.
Mais dès l'ecriture il me dit qu'il manque un with ...
J'aimerai comprendre.

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Bonjour le fil, bonjour le forum,

Des petits bouts de code ne nous permettent pas de cerner ton problème. Le code complet serait bienvenu...
 

guigui971

XLDnaute Junior
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Salut,
Je n'osais pas. Voilà le fichier.

Pour que vous compreniez : il s'agit d'un utilitaire permettant de mettre en forme automatiquement un tableur de données brutes.

On colle ce tableur en A1 de la feuille "Données" et on lance la macro "GLOBALE" (avec le bouton lancer le traitement, situé dans la feuille "Paramètres") qui fait se succéder plein de macros.

Dans ce que je vous envoie, j'ai déjà collé les données. Il ne vous reste qu'à lancer le traitement...

Merci de votre interret
 

Pièces jointes

  • ANALY_4.1.xlsm
    90.8 KB · Affichages: 96

Staple1600

XLDnaute Barbatruc
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Bonjour à tous

guigui971
Bonjour MaPomme (amateur de MAC?) et Staple1600 (un modèle d'agrafeuse? non une référence de boite d'agrafes ;)).
...
J'ai testé la proposition de Staple1600, bien que la cellule source B21 soit en fait une liste déroulante et qu'il n'y a donc pas de risque qu'elle soit vide.
Mais dès l’écriture il me dit qu'il manque un with ...
J'aimerai comprendre.

Merci

Palsambleu!!
J'avais oublié un End If dans mon copier/coller. (voir édition de mon message précédent)

Désolé guigui971 :eek:
 

guigui971

XLDnaute Junior
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Messieurs, je crois que je commence à comprendre : En fait, il faut que je définise ma variable au début de chacune des macros qui l'exploitent.

N'y a t-il pas moyen de la définir une fois pour toute, pour tout le project?

Merci
 

Staple1600

XLDnaute Barbatruc
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Re

guigui971
Lances, lances, et relances puis relances encore cette macro de test sur un classeur vierge, et observe ce qui se passe.
NB: Tu prendras soin au préalable de nommer une feuille de classeur MaFeuille ;)
(ou alors tu modifies le code en conséquence, ex: With Sheets(1) )
Code:
Public Sub test()
Dim Ligne As Long, Result As String, x As Long
Randomize 12082013
x = Int((56 - 1 + 1) * Rnd + 1)
With Sheets("MaFeuille")
    .Columns(1).Clear
    .[A1] = x
        If IsEmpty(.[A1]) Or Not IsNumeric(.[A1]) Then
            Exit Sub
            Else
            Ligne = .[A1]
        End If
    End With
    Result = "Ligne -> : " & Ligne & vbCrLf
    Result = Result & "Range(""A"" & Ligne).Address -> : " & Range("A" & Ligne).Address & vbCrLf
    Result = Result & "Cells(Ligne, ""A"").Resize(Ligne, 3).Address -> : " & Cells(Ligne, "a").Resize(Ligne, 3).Address & vbCrLf
    Result = Result & "Range(""A3:A"" & Ligne).Address -> : " & Range("A3:A" & Ligne).Address & vbCrLf & vbCrLf
    Result = Result & vbTab & "Cliquez sur OK pour la suite du test."
    MsgBox Result, vbInformation, "Pour infos"
    With Range("A3:A" & Ligne)
      .FormulaLocal = "=AUJOURDHUI()+LIGNE()"
      .Font.Bold = True
      .Interior.ColorIndex = x
      .NumberFormatLocal = "jjjj j mmmm aaaa"
    End With
End Sub

PS: Cette macro de test n'a rien à voir (ou presque) avec une solution à ta question:
Elle est purement illustrative.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Re, salut MJ13__________________________EDITION: Bonjour Robert

guigui971:
Tu as des question sur le code?
Est-ce qu'au moins celui-ci a été utile pour avancer dans la résolution de ta problématique ?

Précision: j'avais zappé ta PJ dans ce message :eek:
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Bonjour le fil, bonjour le forum,

Il faut impérativement éviter les Select qui ralentissent considérablement l'exécution du code. En pièce jointe ton fichier modifié. j'ai tout regroupé dans un seul module (Module1). Il semble qu'il y ait encore des redondances de mise en forme...
Le problème de la variable LIGNE était qu'elle perdait sa portée à la fin de la macro Macro1 et devenait nulle. En la déclarant Private en haut du module, elle reste utilisable pour tous le module. J'ai encore quelques bug liés à ma version 2003 qui n'accepte pas quelques lignes de code mais cela devrait tourner chez toi...
 

Pièces jointes

  • Guigui_v01.xlsm
    90.8 KB · Affichages: 49

guigui971

XLDnaute Junior
Re : définir une variable à partir d'une cellule, .........et comment l'utiliser?

Merci Robert
Mais lorsque je tente de l'ouvrir, j'ai un message Excel qui m'est inconnu :

Excel found unreadable content in 'guigui_v01.xlsm'. Do you want to recover the contents of this workbook? If you trut the source of this workbook, click Yes.

Quand je fais yex, il me l'ouvre, mais la macro plante dès son début...
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa