problématique déclaration de variable / comparaison de variable

  • Initiateur de la discussion Initiateur de la discussion anbert
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anbert

XLDnaute Nouveau
Bonjour à tous,

J'ai passé pas mal de temps à réaliser cette macro pour de la gestion de prise de connaissance.
Je l'ai écrite sur excel mac 2011

La macro fonctionnait sur la première feuille, mais ceci, c'était quand j'utilisais juste des chiffres dans les cases.
J'ai tenté de réorganiser mes variables pour avoir une écriture plus propre, et de passer sur des données plus réelles qui sont notamment du texte.

--> Erreurs.
Je ne trouve pas ce qui ne marche pas.
Mes pistes :
- erreur dans la déclaration de variables
- erreur dans la comparaison que je fais pour mes boucles entre la valeur d'une cellule et une variable.

Les valeurs des variables sont définies via le tableau principal sur la première page.
 

Pièces jointes

Bonjour anbert,

C'est normal que ton code plante, si "Perscol" est déclaré en string il ne pourra recevoir que du texte.
Si Perscol.value = 73 le fait de déclarer cette variable en String il le retranscrira en "73", chose qu'il n'est pas réutilisable dans cells.

Soit tu déclare en "Variant" ( Un ptit fourre tout qui prends tout ) ou tu déclare en "Integer"

Dim ColFinPers, PersLig, PersCol As Variant 'variables des references colonnes et lignes personnes

ou

Dim ColFinPers, PersLig, PersCol As Integer 'variables des references colonnes et lignes personnes
 
Bonsoir anbert

D'après le fichier tu as 2 feuilles plus un classeur de destination, si j'ai bien lus.

Étant donné qu'en général on écrit soit Sheets(1) , soit Sheets("Feuil1") tu remarque que Nomfeuille n'a pas de guillemets. Vu que tu as 2 classeurs, il vaut mieux écrire

Set Wsh = Thisworkbook.Sheets("Extraction")

With Wsh
While .Cells(PersLig, PersCol).Value <> ColFinPers
Wend
End With

EDIT: bonsoir Florian
 
Dernière édition:
Bonsoir.
La méthode Cells c'est bien Cells(ligne, colonne)
ligne peut être String ou un type numérique, pourvu qu'il soit convertible en un numéro de ligne.
colonne doit être soit un numéro de colonne obligatoirement numérique, soit un entête de colonne String.
Mais un conseil: n'utilisez plus cette méthode. Travaillez avec des tableaux VBA, c'est considérablement plus rapide.
La propriété Value d'un Range de plusieurs cellules contiguës est justement directement un tableau 2D basé 1, en entrée comme en sortie.
Un type de données spécifié à la fin d'un Dim ne s'applique qu'à la dernière variable. Les autre, sans type précisé, se retrouvent Variant.
Bonsoir Florian53 et Lone-wolf.
 
Bonsoir à tous, et merci pour vos réponses.

@Florian53:
Je viens de distinguer les variables. Celles chiffrées (lignes, colonnes) que j'ai mis en Integer, de celles plus texte en Variant/string.
Le bug n'est plus le même, mais est présent à la ligne (voir ci dessous)

@Lone-wolf:
en fait NomFeuille est une variable, d'où l'absence de guillemets. Elle est définie 2 lignes au dessus 🙂
Par contre, effectivement, mon code n'est pas très beau et je préfère l'exemple que tu donnes.

@Dranreb :
Je ne connais pas / N'ai pas compris ton histoire de tableau :-s Je vais faire des recherches.
En dehors de cette autre méthode, je suis normalement bien en numérique.

Mais bug touours présent à la ligne :
If Cells(GrpLig, GrpCol).Value <> LigFinGrp Then
LigFinGrp, c'est du texte.
Je me demande si il ne faut pas que je créé une variable texte pour le résultat Cells(GrpLig, GrpCol).Value, de type texte egalement.
 

Pièces jointes

Bizarre, je ne manipule que des chiffres.
Mais je viens de mettre en place deux nouvelles variables de manière à restaurer certaines valeurs d'origine.
Le bug semble passé.
Je trouve d'autres défauts, mais plus lié à mon écriture, il va falloir que je vérifie.
Merci bcp pour votre aide.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
1 K
Retour